淺談數據庫中的觸發器


觸發器

  其是一種特殊的存儲過程。一般的存儲過程是通過存儲過程名直接調用,而觸發器主要是

  通過事件(增、刪、改)進行觸發而被執行的。其在表中數據發生變化時自動強制執行。

  常見的觸發器有兩種: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元

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM