先創建一個簡單的觸發器
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