|
1、觸發(fā)器。 定義: 何為觸發(fā)器?在SQL Server里面也就是對某一個表的一定的操作,觸發(fā)某種條件,從而執(zhí)行的一段程序。觸發(fā)器是一個特殊的存儲過程。 常見的觸發(fā)器有三種:分別應用于Insert , Update , Delete 事件。(SQL Server 2000定義了新的觸發(fā)器,這里不提) 我為什么要使用觸發(fā)器? 比如,這么兩個表: Create Table Student( --創(chuàng)建學生表 StudentID int primary key, --學號,定義主鍵約束 .... ) Create Table BorrowRecord( --創(chuàng)建借書記錄表 BorrowRecord int identity(1,1), --自動增長流水號 StudentID int , --學號 BorrowDate datetime, --借出時間 ReturnDAte Datetime, --歸還時間 ... ) 用到的功能有: 1.如果我更改了學生的學號,我希望他的借書記錄仍然與這個學生相關(也就是同時更改借書記錄表的學號); 2.如果該學生已經畢業(yè),我希望刪除他的學號的同時,也刪除它的借書記錄。 等等。 這時候可以用到觸發(fā)器。對于1,創(chuàng)建一個Update觸發(fā)器: Create Trigger truStudent On Student for Update --觸發(fā)器類型--Update ------------------------------------------------------- --Name:truStudent --func:更新BorrowRecord 的StudentID,與Student同步。 --Use :None --User:System --Author: wp_love --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 理解觸發(fā)器里面的兩個臨時的表:Deleted , Inserted 。注意Deleted 與Inserted分別表示觸發(fā)事件的表“舊的一條記錄”和“新的一條記錄”。 一個Update 的過程可以看作為:生成新的記錄到Inserted表,復制舊的記錄到Deleted表,然后刪除Student記錄并寫入新紀錄。 對于2,創(chuàng)建一個Delete觸發(fā)器 Create trigger trdStudent On Student for Delete ------------------------------------------------------- --Name:trdStudent --func:同時刪除 BorrowRecord 的數(shù)據(jù) --Use :None --User:System --Author: --Date : 2003-4-16 --Memo : 臨時寫寫的,給大家作個Sample。沒有調試阿。 ------------------------------------------------------- As Delete BorrowRecord From BorrowRecord br , Delted d Where br.StudentID=d.StudentID 從這兩個例子我們可以看到了觸發(fā)器的關鍵:A.2個臨時的表;B.觸發(fā)機制。 這里我們只講解最簡單的觸發(fā)器。復雜的容后說明。 |
|
|
來自: 小朋 > 《數(shù)據(jù)庫技術》