1. 程式人生 > >建立INSERT、DELETE、UPDATE 觸發器示例

建立INSERT、DELETE、UPDATE 觸發器示例

        觸發器是基於一個表建立的,但是可以針對多個表進行操作。所以觸發器可以用來對錶實施複雜的完整性的約束,當觸發器所儲存的資料發生改變時,觸發器所儲存的資料發生改變時,觸發器被自動啟用,從而防止對資料的不正確修改。

        下面對每個INSERT、DELETE、UPDATE觸發器舉一個小例子來加深理解:

INSERT觸發器:

        INSERT觸發器就是當對定義觸發器的表執行INSERT語句時,就會呼叫的觸發器,INSERT觸發器可以用來修改,甚至拒絕接受正插入的記錄。

建立一個學生資訊管理的資料庫,並且建立兩個表,如下圖所示:


ClassInfo表如下:


StudentInfo表如下:


新建查詢,輸入如下的程式碼:


create trigger T_addStudent
on StudentInfo
for insert
as 
  update ClassInfo set totalNum=totalNum+1
  where ClassNo = (select StuClass from inserted)

上面這段程式碼就是建立了一個插入觸發器


如上圖所示

1、  寫明觸發器的名稱

2、  該觸發器是在那個表改變的時候發生

3、  當這個表進行什麼操作的時候發生

4、  發生上述操作之後還要進行怎樣的操作。

這段程式碼的意思是:當在studentInfo表中新增一條記錄的時候,就要更新ClassInfo中的TotalNum這一列,這一列的資料要增加1

下面我們驗證一下:

輸入下面的程式碼:

select totalNum from ClassInfo where ClassNo ='002'
insert into StudentInfo values('小明','003','002','男')
select totalNum from ClassInfo where ClassNo ='002'

執行之後將出現下面的結果:



        所以當我們想student表中插入一條記錄的時候,Class表中的某一列就會加1.

DELETE觸發器:

        當資料庫執行DELETE語句時,就會啟用DELETE觸發器,DELETE觸發器用於約束使用者能夠從資料庫中刪除的資料,因為這些資料中,有些資料是不希望使用者輕易刪除的。

        接下來,我們再建立一個表,並且輸入一些資料,如下圖所示:



新建查詢,輸入如下的程式碼:

create Trigger T_DELETETEACHERon TeacherInfoFor deleteas select TeacherName as 教師姓名,Sex, Age from deleted

輸入下面的語句

delete from TeacherInfo where TeacherId = '001'


執行結果如圖所示:



他會將我們剛剛刪除的語句顯示出來。

UPDATE 觸發器:

當一個UPDATE語句在目標表上執行的時候,就會呼叫UPDATE觸發器,這種型別的觸發器專門用於約束使用者能修改的現有的資料。

繼續用上面的教師資訊表,輸入下面的程式碼


create trigger t_Update
on TeacherInfo 
for update 
as 
if (update(TeacherName)or update(sex))
begin 
	print'事物不能被處理,基本資料不能修改!'
	rollback transaction
end 
else 
	print'資料修改成功!'


接著我們更改一下第二條教師的資訊

輸入下面的程式碼:

Update TeacherInfo setTeacherName=’仙兒’ where TeacherID = ‘002’

將彈出下面的訊息框:



相關推薦

建立INSERTDELETEUPDATE 觸發器示例 .

觸發器是基於一個表建立的,但是可以針對多個表進行操作。所以觸發器可以用來對錶實施複雜的完整性的約束,當觸發器所儲存的資料發生改變時,觸發器所儲存的資料發生改變時,觸發器被自動啟用,從而防止對資料的不正確修改。         下面對每個INSERT、DELETE、UPDAT

建立INSERTDELETEUPDATE 觸發器示例

        觸發器是基於一個表建立的,但是可以針對多個表進行操作。所以觸發器可以用來對錶實施複雜的完整性的約束,當觸發器所儲存的資料發生改變時,觸發器所儲存的資料發生改變時,觸發器被自動啟用,從而防止對資料的不正確修改。         下面對每個INSERT、DELE

MyBatis:@Insert@Delete@Update@Select的value輸入SQL陣列時如何處理

當使用MyBatis的@Insert、@Delete、@Update、@Select時,我發現它們的value屬性都是陣列,例如: @Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) pu

MongoDB入門系列(二):InsertUpdateDeleteDrop

概述   本章節介紹Insert、Update、Delete、Drop操作基本語法。 環境: Version:3.4 insert insert()基本語法如下: db.collection.insert( <document or array of documents&

SQL(insertdeleteupdate)執行成功,但是資料庫表中無顯示無記錄

     如題,程式中insert一條記錄,除錯過程中根據執行結果發現此條sql已經執行成功(影響行數為1且插入記錄已生成自增主鍵正確值),但是查詢資料庫相應表時發現表中並無相應記錄,通過直接在表中插入測試資料也能發現已有記錄的主鍵值自增後的值已被佔用(例如:id為主鍵,

insertdeleteupdate 的提交和撤消

1  自動提交的設定    為了保證在SQL>方式下進行INSERT、DELETE和UPDATE操作達到安全的目的,一般在SQL>下進行INSERT、DELETE和UPDATE操作前,建議將環境設定成為非自動提交的方式。我們可以在SQL>下用 show au

Oracle user1對user2使用者下所有表,有selectinsertdeleteupdate許可權

對於本地的使用者,執行INSERT操作只需要INSERT許可權,而只有INSERT許可權這對於通過資料庫鏈執行插入操作是不夠的。 看Oracle的管理員手冊是發現了這個問題,以前還確實沒有注意過。 看一個具體的例子,首先在本地建立一個普通使用者,並將表T的INSERT、UPDATE和DELETE許可權授

mysql droptruncatedeleteselect

bsp lba 行數 mysql data 版本 tab 顯示 -c drop table tb_nametruncate tb_namedelete from tb_name (where)drop最厲害,沒辦法找回。truncate在事務中不能回滾(rollback),

【MySQL】dropdeletetruncate

mys 清除 mysql spa mar rom 部分 實例 mark 刪除表內數據,用 delete。格式為: delete from 表名 where 刪除條件; 實例:刪除學生表內姓名為張三的記錄。 delete from student where T_name

認識和使用工具之使用Postman模擬傳送getpostdeleteput請求

使用Postman模擬傳送get、post、delete、put請求 現在的模擬傳送請求外掛很多,包括在idea上都自帶了Test restful web service來模擬請求,但親測postman更好用一些 今天來分享如何使用postman傳送各種請求 1.下載 postman

淺談http協議六種請求方法,getheadputdeletepostoptions區別

原帖:https://www.cnblogs.com/wei-hj/p/7859707.html 標準Http協議支援六種請求方法,即: 1、GET 2、POST 3、PUT 4、Delete 5、HEAD 6、Options 但其實我們大部分情況下只用到了GET和P

AFNetworking PUTDELETEGETPOST封裝方法設定請求頭

1、GET + (void)requestGETSuperAPIWithURLStr:(NSString *)urlStr WithAuthorization:(NSString *)authorization paramDic:(NSDictionary *)paramD

資料庫中truncatedeletedrop三種刪除的區別

delete:delete from 表名 where **** delete可以刪除行資料,也可以對整表資料刪除,一般與where關聯使用。delete刪除內容,釋放內容空間,但是表結構和表定義不刪除。 truncate:truncate table 表名 trunc

資料庫mysql語句之dropdeletetruncate

drop直接刪掉表 truncate刪除表中資料,再插入時自增長id又從1開始 delete刪除表中資料,可以加where字句。 (1) DELETE 語句執行刪除的過程是每次從表中刪除一行,並且同時

http請求方法:GETPOSTPUTPATCHDELETEOPTIONSHEADTRACE

http方法:GET、HEAD、POST、PUT、DELETE、OPTIONS、TRACE、PATCH 根據RFC2616第九章說明,http方法的定義有兩點:safe and Idempotent,即安全性和冪等性,可以結合這兩點對以上方法進行說明 1,GET 安全、冪等

資料庫中刪除語句DropDeleteTruncate的相同點和不同點的比較(舉例說明)

資料庫中刪除語句Drop、Delete、Truncate的相同點和不同點的比較(舉例說明) 資料庫刪除語句的分別介紹: Delete:用於刪除表中的行(注:可以刪除某一行;也可以在不刪除表的情況下(即意味著表的結構、屬性、索引完整)刪除所有行)        

AJAX傳送GETPOSTDELETEPUT請求到伺服器

$.ajax({})設定contentType引數值為 'application/x-www-form-urlencoded;charset=UTF-8'(不設定contentType引數值也是這種也是這中情況) 傳送GET、POST請求只需要設定 type

Sql Server 觸發器UpdateInsertDelete

什麼是觸發器 在SQL Server裡面也就是對某一個表的一定的操作,觸發某種條件,從而執行的一段程式。觸發器是一個特殊的儲存過程。 常見的觸發器一共有三種 Insert, Update,Delete

python sqlite3 連線到資料庫,建立表,INSERT SELECTUPDATE DELETE等簡單操作

Python sqlite3 模組它提供了一個SQL介面相容。不需要單獨安裝這個模組,因為它預設情況下隨著Python版本在2.5.x 一起安裝。 要使用sqlite3模組,必須首先建立一個連線物件,表示資料庫中,然後可以選擇建立遊標物件,這將幫助在執行的所有

【MyBatis源碼分析】insert方法update方法delete方法處理流程(上篇)

times database connect 環境 enable clas 它的 java對象 ace 打開一個會話Session 前文分析了MyBatis將配置文件轉換為Java對象的流程,本文開始分析一下insert方法、update方法、delete方法處理的流程,至