對表的操作 |
Inserted邏輯表 |
Deleted邏輯表 |
增加記錄(insert) |
存放增加的記錄 |
無 |
刪除記錄(delete) |
無 |
存放被刪除的記錄 |
修改記錄(update) |
存放更新后的記錄 |
存放更新前的記錄 |
三、for、after、instead of觸發(fā)器
after:觸發(fā)器在觸發(fā)它們的語句完成后執(zhí)行。如果該語句因錯誤而失敗,觸發(fā)器將不會執(zhí)行。不能為視圖指定after觸發(fā)器,只能為表指定該觸發(fā)器??梢詾槊總€觸發(fā)操作(insert、update、delete)指定多個after觸發(fā)器。如果表有多個after觸發(fā)器,可使用sp_settriggerorder定義哪個after觸發(fā)器最先激發(fā),哪個最后激發(fā)。除第一個和最后一個觸發(fā)器外,所有其他的after觸發(fā)器的激發(fā)順序不確定,并且無法控制。
for:等同于after
instead of:該觸發(fā)器代替觸發(fā)操作執(zhí)行。可在表和視圖上指定instead of觸發(fā)器。只能為每個觸發(fā)操作(insert、update、delete)定義一個instead of觸發(fā)器。instead of觸發(fā)器可用于對insert和update語句中提供的數(shù)據(jù)值執(zhí)行增強的完整性檢查。
四、 觸發(fā)器的使用
1、創(chuàng)建觸發(fā)器:
create trigger trigger_name
on {table_name | view_name}
{for| After | Instead of }
[ insert, update,delete ]
as
sql_statement
2、刪除觸發(fā)器:
drop trigger trigger_name
3、查看數(shù)據(jù)庫中已有的觸發(fā)器:
select * from sysobjects where xtype='TR'
4、查看單個觸發(fā)器:
exec sp_helptext '觸發(fā)器名'
5、修改觸發(fā)器:
alter trigger trigger_name
on {table_name | view_name}
{for| After | Instead of }
[ insert, update,delete ]
as
sql_statement
五、觸發(fā)器的實例
1、在Orders表中建立觸發(fā)器,當向Orders表中插入一條記錄時,檢查goods表的貨品狀態(tài)status是否為1。是,則不能往Orders表加入該訂單。
if (object_id('tgr_orders_insert', 'tr') is not null)end
標簽:黃山 河源 金昌 貸款群呼 新余 濟寧 中衛(wèi) 宜春
巨人網(wǎng)絡通訊聲明:本文標題《Sql Server觸發(fā)器的使用》,本文關鍵詞 Sql,Server,觸發(fā)器,的,使用,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。