2010 4 15 sql 觸發器應用

2021-05-22 06:21:47 字數 1933 閱讀 1511

觸發器

定義: 何為觸發器?在sql server裡面也就是對某乙個表的一定的操作,觸發某種條件,從而執行的一段程式。觸發器是乙個特殊的儲存過程。

常見的觸發器有三種:分別應用於insert , update , delete 事件。

我為什麼要使用觸發器?比如,這麼兩個表:

create table student(             --學生表

studentid int primary key,      --學號

....

)create table borrowrecord(              --學生借書記錄表

borrowrecord  int identity(1,1),      --流水號  

studentid     int ,                   --學號

borrowdate    datetime,               --借出時間

returndate    datetime,               --歸還時間

...)

用到的功能有:

1.如果我更改了學生的學號,我希望他的借書記錄仍然與這個學生相關(也就是同時更改借書記錄表的學號);

2.如果該學生已經畢業,我希望刪除他的學號的同時,也刪除它的借書記錄。

等等。這時候可以用到觸發器。對於1,建立乙個update觸發器:

create trigger trustudent

on student                        --在student表中建立觸發器

for update                         --為什麼事件觸發

as                                       --事件觸發後所要做的事情

if update(studentid)          

begin

update borrowrecord 

set studentid=i.studentid

from borrowrecord br , deleted  d ,inserted i     --deleted和inserted臨時表

where br.studentid=d.studentid

end       

理解觸發器裡面的兩個臨時的表:deleted , inserted 。注意deleted 與inserted分別表示觸發事件的表「舊的一條記錄」和「新的一條記錄」。

乙個資料庫系統中有兩個虛擬表用於儲存在表中記錄改動的資訊,分別是:

虛擬表inserted                    虛擬表deleted

在表記錄新增時    存放新增的記錄                        不儲存記錄

修改時          存放用來更新的新記錄                  存放更新前的記錄

刪除時          不儲存記錄                            存放被刪除的記錄

乙個update 的過程可以看作為:生成新的記錄到inserted表,複製舊的記錄到deleted表,然後刪除student記錄並寫入新紀錄。

對於2,建立乙個delete觸發器

create trigger trdstudent

on student

for delete

asdelete borrowrecord 

from borrowrecord br , delted d

where br.studentid=d.studentid

從這兩個例子我們可以看到了觸發器的關鍵:a.2個臨時的表;b.觸發機制。

這裡我們只講解最簡單的觸發器。複雜的容後說明。

事實上,我不鼓勵使用觸發器。觸發器的初始設計思想,已經被「級聯」所替代

sql 觸發器 直接遞迴觸發器

create trigger dbo loving20000 on dbo s for delete asdeclare age int select age sage from deleted delete s where sage age delete from s where sname xq...

sql 觸發器 儲存過程 觸發器(3 3)

1 what?什麼是觸發器 trigger 前兩篇介紹了儲存過程,儲存過程可以理解為sql語句集。那麼觸發器就是一種特殊的儲存過程,也就是一群特殊的sql語句集。特殊在哪?從上文得知,儲存過程是依賴名字才被呼叫的。不僅是儲存過程,我們常用的方法等,大部分也是先知道名字,才能去使用。就像吃飯採用訂外賣...

SQL之觸發器

觸發器是一種不帶引數特殊的儲存過程,有使用者定義,資料庫系統根據一定的條件自動執行 sql觸發器大體上可以分為4種 insert 觸發器 在對錶進行資料錄入的時候觸發 delete 觸發器 刪除表中的資料的時候觸發 instead of 觸發器 此類觸發器建立在檢視之上,用來替代相應的動作,比如de...