資料庫觸發器簡介與執行個體,資料庫觸發器執行個體

來源:互聯網
上載者:User

資料庫觸發器簡介與執行個體,資料庫觸發器執行個體
觸發器

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

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

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

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.