資料庫的觸發器

2021-08-08 20:52:54 字數 1229 閱讀 5120

觸發器

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

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

常見的觸發器有兩種:after(for)、instead of,用於insert、update、delete事件。

after(for)        表示執行**後,執行觸發器

instead of        表示執行**前,用已經寫好的觸發器代替你的操作

觸發器語法:

create trigger 觸發器的名字   on 操作表

for|after         instead of

update|insert|delete

assql語句

觸發器實現原理圖

觸發器示例

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

asupdate bank balance=balance+10 where cid=(select cid from deleted)

生成這個觸發器之後,當使用者輸入delete語句後,對應的那個id不但沒有被刪除掉,而且他的賬戶增加了10元

如:delete from bank where cid='0002',執行完這句話後,編號為0002的賬戶會增加10元

資料庫觸發器

觸發器是一種特殊型別的儲存過程,它不同於我們前面介紹過的儲存過程。觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而 被直接呼叫。當對某一表進行諸如update insert delete 這些操作時,sql server 就會自動執行觸發器所定義的sql 語句,從而確保對資料...

資料庫觸發器

最近做了個觸發器的例子 create trigger tru user on user for update asif update status begin update user set stopflag 1 from inserted where user.userid inserted.us...

資料庫 觸發器

觸發器的概念 是使用者定義在關係表上的一類有事件驅動的特殊過程。一旦定義,任何對錶的增刪改操作均有伺服器自動啟用相應的觸發器,在dbms核心層進行集中的完整性控制。類似於約束,但比約束更靈活。觸發器的分類 dml觸發器 dml data manipulation language 觸發器是當資料庫伺...