SqlServer觸發器常用語法AFTER、INSTEAD OF及其詳解


先創建一個簡單的觸發器

CREATE TRIGGER trigger_name
 ON table_name
 [WITH ENCRYPTION]
  FOR | AFTER | INSTEAD OF [DELETE, INSERT, UPDATE]
 AS 
  T-SQL語句
GO

觸發器位置:數據庫>表>我這里是表名table_name>觸發器

解釋:
1、[WITH ENCRYPTION]:表示將該觸發器加密,加密后觸發器執行方法將無法被查看

[DELETE, INSERT, UPDATE]對應為當執行刪除、插入、更新三種動作時被觸發
執行insert時,獲取插入后的數據,可用select*from inserted讀取
執行delete時,獲取刪除前的數據,可用select*from deleted讀取
執行update時,獲取更新前的數據,可用select*from deleted讀取,獲取更新后數據,可用select*from inserted讀取


2、AFTER:操作成功后(這里是插入table_a后),執行觸發器操作
例如
CREATE TRIGGER T_A
ON table_a
after insert
as
begin

declare @id int,@name varchar(20)
select @id=id,@name=name from inserted
insert into table_b values(@id,@name)

end


3、INSTEAD OF:該觸發器只是數據庫的“導火線”,觸發器是否能執行到想要的結果,需要由觸發器中的邏輯進行判斷,因為該觸發器往往伴隨着很多的判斷分支。
例如
CREATE TRIGGER T_B
ON table_a
instead of insert
as
begin

IF EXISTS(select*from table_a where name =(select name from inserted))
ROLLBACK TRANSACTION
PRINT '該姓名已存在'

ELSE
INSERT INTO table_a VALUES(select*from inserted)
PRINT '插入成功'

end


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM