sql數(shù)據(jù)庫(kù)觸發(fā)器怎么寫 SQl中觸發(fā)器怎樣執(zhí)行的?
SQl中觸發(fā)器怎樣執(zhí)行的?觸發(fā)器是一種特殊的存儲(chǔ)過程,在插入、更新或刪除表時(shí)將自動(dòng)執(zhí)行。觸發(fā)器通常用于更復(fù)雜的檢查約束。例如,在執(zhí)行update、insert、delete等操作時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用并執(zhí)
SQl中觸發(fā)器怎樣執(zhí)行的?
觸發(fā)器是一種特殊的存儲(chǔ)過程,在插入、更新或刪除表時(shí)將自動(dòng)執(zhí)行。觸發(fā)器通常用于更復(fù)雜的檢查約束。例如,在執(zhí)行update、insert、delete等操作時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用并執(zhí)行該表對(duì)應(yīng)的觸發(fā)器。在SQLServer2005中,觸發(fā)器可以分為兩種類型:DML觸發(fā)器和DDL觸發(fā)器。DDL觸發(fā)器可以影響多個(gè)數(shù)據(jù)定義語(yǔ)言語(yǔ)句并觸發(fā)它們。這些語(yǔ)句包括create、alter和drop語(yǔ)句。DML觸發(fā)器分為:
1,after trigger(after trigger)a,insert trigger B,update trigger C,delete trigger
2,代替trigger(before trigger)。After trigger要求觸發(fā)器只能在執(zhí)行insert、update、delete操作后觸發(fā),并且只能在表上定義。insert和update的定義不僅僅指觸發(fā)器本身的執(zhí)行。可以在表或視圖上定義instead of觸發(fā)器。觸發(fā)器有兩個(gè)特殊的表:插入表和刪除表。這兩個(gè)是邏輯表和虛擬表。系統(tǒng)在內(nèi)存中創(chuàng)建了兩個(gè)表,它們不會(huì)存儲(chǔ)在數(shù)據(jù)庫(kù)中。而且這兩個(gè)表是只讀的,只能讀取數(shù)據(jù),不能修改數(shù)據(jù)。這兩個(gè)表的結(jié)果總是與修改后的觸發(fā)器應(yīng)用的表的結(jié)構(gòu)相同。觸發(fā)器完成后,將刪除這兩個(gè)表。插入表的數(shù)據(jù)是插入或修改的數(shù)據(jù),刪除表的數(shù)據(jù)是更新或刪除的數(shù)據(jù)。更新數(shù)據(jù)時(shí),首先刪除表記錄,然后添加記錄。這樣,插入的表和刪除的表中都有更新的數(shù)據(jù)記錄。注意:觸發(fā)器本身是一個(gè)事務(wù),因此您可以對(duì)觸發(fā)器中修改的數(shù)據(jù)進(jìn)行一些特殊檢查。否則,可以回滾事務(wù)并撤消操作。