資料庫觸發器簡介與執行個體,資料庫觸發器執行個體
觸發器
其是一種特殊的預存程序。一般的預存程序是通過預存程序名直接調用,而觸發器主要是
通過事件(增、刪、改)進行觸發而被執行的。其在表中資料發生變化時自動強制執行。
常見的觸發器有兩種:after(for)、instead of,用於insert、update、delete事件。
after(for) 表示執行代碼後,執行觸發器
instead of 表示執行代碼前,用已經寫好的觸發器代替你的操作
觸發器文法:
create trigger 觸發器的名字 on 動作表
for|after instead of
update|insert|delete
as
SQL語句
觸發器實現原理圖
觸發器樣本
Example1
--禁止使用者插入資料(實際上是先插入,然後立刻將其刪除!)
create trigger tr_insert on bank
for --for表示執行之後的操作
insert --即先執行了插入操作,同時在暫存資料表中儲存了插入記錄
as
--執行完插入之後,在新產生的表中將剛剛插入的那條記錄刪除,
--而此時得到的剛剛插入的記錄的id是通過暫存資料表 inserted得到的
delete * from bank where cid=(select cid from inserted)
產生上面的觸發器後,當使用者再輸入insert語句後就見不到效果了!
如:insert into bank values('0004',10000),是插入不進資料庫的。
Example2
--刪除誰就讓誰的賬戶加上10元
create trigger tr_dalete on bank
instead of
delete
as
update bank balance=balance+10 where cid=(select cid from deleted)
產生這個觸發器之後,當使用者輸入delete語句後,對應的那個id不但沒有被刪除掉,而且他的賬戶增加了10元
如:delete from bank where cid='0002',執行完這句話後,編號為0002的賬戶會增加10元