Sql Server觸發(fā)器的使用
對表的操作 |
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í)行??稍诒砗鸵晥D上指定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)drop trigger [tgr_orders_insert];
go
create trigger [tgr_orders_insert]
on [orders]
after insert
as
if (select [status] from [goods],[inserted] where [goods].name=[inserted].name)=1
begin
print 'the goods is being processed'
print 'the order cannot be committed'
rollback transaction --回滾﹐避免加入
end
相關文章
SqlServer數(shù)據(jù)庫中文亂碼問題解決方法
SQL版的亂碼問題還是出現(xiàn)在SQL SERVER的安裝設置上。默認安裝時系統(tǒng)默認的排序規(guī)則是拉丁文的排序規(guī)則,但一般人在安裝時沒有考慮到這一點,安裝時只是點取下一步,安裝完成后,造成了SQL版在使用過程中出現(xiàn)亂碼2020-03-03SQL Server本地時間和UTC時間的相互轉換實現(xiàn)代碼
SQL Server 本地時間和UTC時間的相互轉換的代碼,需要的朋友可以參考下。2011-07-07MSSQL監(jiān)控數(shù)據(jù)庫的DDL操作(創(chuàng)建,修改,刪除存儲過程,創(chuàng)建,修改,刪除表等)
下面就是一個解決上述問題的方案,我們通過創(chuàng)建一個表DatabaseLog和DDL觸發(fā)器來解決問題,首先在msdb數(shù)據(jù)庫里面新建一個表DatabaseLog,用來保存DDL觸發(fā)器獲取的信息2013-08-08SQL?Server數(shù)據(jù)庫連接查詢和子查詢實戰(zhàn)案例
子查詢(嵌套查詢)子查詢也稱嵌套查詢,是指一個SELECT查詢語句可以嵌入另一個SELECT查詢語句之中,下面這篇文章主要給大家介紹了關于SQL?Server數(shù)據(jù)庫連接查詢和子查詢的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2023-04-04