對(duì)表的操作 |
Inserted邏輯表 |
Deleted邏輯表 |
增加記錄(insert) |
存放增加的記錄 |
無 |
刪除記錄(delete) |
無 |
存放被刪除的記錄 |
修改記錄(update) |
存放更新后的記錄 |
存放更新前的記錄 |
三、for、after、instead of觸發(fā)器
after:觸發(fā)器在觸發(fā)它們的語(yǔ)句完成后執(zhí)行。如果該語(yǔ)句因錯(cuò)誤而失敗,觸發(fā)器將不會(huì)執(zhí)行。不能為視圖指定after觸發(fā)器,只能為表指定該觸發(fā)器。可以為每個(gè)觸發(fā)操作(insert、update、delete)指定多個(gè)after觸發(fā)器。如果表有多個(gè)after觸發(fā)器,可使用sp_settriggerorder定義哪個(gè)after觸發(fā)器最先激發(fā),哪個(gè)最后激發(fā)。除第一個(gè)和最后一個(gè)觸發(fā)器外,所有其他的after觸發(fā)器的激發(fā)順序不確定,并且無法控制。
for:等同于after
instead of:該觸發(fā)器代替觸發(fā)操作執(zhí)行??稍诒砗鸵晥D上指定instead of觸發(fā)器。只能為每個(gè)觸發(fā)操作(insert、update、delete)定義一個(gè)instead of觸發(fā)器。instead of觸發(fā)器可用于對(duì)insert和update語(yǔ)句中提供的數(shù)據(jù)值執(zhí)行增強(qiáng)的完整性檢查。
四、 觸發(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ù)庫(kù)中已有的觸發(fā)器:
select * from sysobjects where xtype='TR'
4、查看單個(gè)觸發(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ā)器的實(shí)例
1、在Orders表中建立觸發(fā)器,當(dāng)向Orders表中插入一條記錄時(shí),檢查goods表的貨品狀態(tài)status是否為1。是,則不能往Orders表加入該訂單。
if (object_id('tgr_orders_insert', 'tr') is not null)end
標(biāo)簽:黃山 河源 金昌 貸款群呼 新余 濟(jì)寧 中衛(wèi) 宜春
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Sql Server觸發(fā)器的使用》,本文關(guān)鍵詞 Sql,Server,觸發(fā)器,的,使用,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。