SQL中,觸發器是什麽?
1、觸發器。 定義: 何為觸發器?在SQL Server裏面也就是對某壹個表的壹定的操作,觸發某種條件,從而執行的壹段程序。觸發器是壹個特殊的存儲過程。 常見的觸發器有三種:分別應用於Insert , Update , Delete 事件。(SQL Server 2000定義了新的觸發器,這裏不提) 我為什麽要使用觸發器?比如,這麽兩個表: 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 for Update ------------------------------------------------------- --Name:truStudent --func:更新BorrowRecord 的StudentID,與Student同步。 --Use :None --User:System --Author: 懶蟲 # SapphireStudio ( www.chair3.com) --Date : 2003-4-16 --Memo : 臨時寫寫的,給大家作個Sample。沒有調試阿。 ------------------------------------------------------- As if Update(StudentID) begin Update BorrowRecord Set br.StudentID=i.StudentID From BorrowRecord br , Deleted d ,Inserted i Where br.StudentID=d.StudentID end 理解觸發器裏面的兩個臨時的表:Deleted , Inserted 。註意Deleted 與Inserted分別表示觸發事件的表“舊的壹條記錄”和“新的壹條記錄”。 壹個Update 的過程可以看作為:生成新的記錄到Inserted表,復制舊的記錄到Deleted表,然後刪除Student記錄並寫入新紀錄。 對於2,創建壹個Delete觸發器 Create trigger trdStudent On Student for Delete ------------------------------------------------------- --Name:trdStudent --func:同時刪除 BorrowRecord 的數據 --Use :None --User:System --Author: 懶蟲 # SapphireStudio ( www.chair3.com) --Date : 2003-4-16 --Memo : 臨時寫寫的,給大家作個Sample。沒有調試阿。 ------------------------------------------------------- As Delete BorrowRecord From BorrowRecord br , Delted d Where br.StudentID=d.StudentID 從這兩個例子我們可以看到了觸發器的關鍵:A.2個臨時的表;B.觸發機制。 這裏我們只講解最簡單的觸發器。復雜的容後說明。 事實上,我不鼓勵使用觸發器。觸發器的初始設計思想,已經被“級聯”所替代。