使用T-SQL語句來創建觸發器 基本語句如下﹕
create trigger trigger_name
on {table_name | view_name}
{for | After | Instead of } [ insert, update,delete ]
as sql_statement
例如:
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記錄並寫入新紀錄。
觸發器語句中使用了兩種特殊的表:deleted 表和 inserted 表。
Deleted 表用於存儲 DELETE 和 UPDATE 語句所影響的行的復本。在執行 DELETE 或 UPDATE 語句時,行從觸發器表中刪除,並傳輸到 deleted 表中。Deleted 表和觸發器表通常沒有相同的行。
Inserted 表用於存儲 INSERT 和 UPDATE 語句所影響的行的副本。在一個插入或更新事務處理中,新建行被同時添加到 inserted 表和觸發器表中。Inserted 表中的行是觸發器表中新行的副本。
1.插入操作(Insert)
Inserted表有數據,Deleted表無數據
2.刪除操作(Delete)
Inserted表無數據,Deleted表有數據
3.更新操作(Update)
Inserted表有數據(新數據),Deleted表有數據(舊數據)
---------------------