给5个trigger排序的codes如何写?
给5个trigger排序的codes怎么写???
原表用了5个trigger,要求这5个trigger要根据以下顺序:
1. Trigger1 是 instead of trigger用来触发 insert & update 操作
2. Trigger2 是 after trigger 用来触发 update 操作
3. Trigger3 是 after trigger 用来触发 delete 操作
4. Trigger4 是 after trigger 用来触发update & delete 操作
5. Trigger5 是 after trigger 用来触发 insert & update 操作
我只会用first & last 用于两个trigger。求大神赐教这种情况怎么排序根据他们各自的功能???
------解决思路----------------------
原表用了5个trigger,要求这5个trigger要根据以下顺序:
1. Trigger1 是 instead of trigger用来触发 insert & update 操作
2. Trigger2 是 after trigger 用来触发 update 操作
3. Trigger3 是 after trigger 用来触发 delete 操作
4. Trigger4 是 after trigger 用来触发update & delete 操作
5. Trigger5 是 after trigger 用来触发 insert & update 操作
我只会用first & last 用于两个trigger。求大神赐教这种情况怎么排序根据他们各自的功能???
------解决思路----------------------
-- 超过 3 个同类型的 TRI ,使用sp_settriggerorder 没什么实际用
-- 你可以按你的执行顺序,重新创建这些TRI
create table test(id int identity , name varchar(30))
go
-- 创建 5 个 TRI
create trigger test_tri_01
on test after insert
as
begin
update test set name = name + ',1' where id in (select id from inserted)
end
go
create trigger test_tri_02
on test after insert
as
begin
update test set name = name + ',2' where id in (select id from inserted)
end
go
create trigger test_tri_03
on test after insert
as
begin
update test set name = name + ',3' where id in (select id from inserted)
end
go
create trigger test_tri_04
on test after insert
as
begin
update test set name = name + ',4' where id in (select id from inserted)
end
go
create trigger test_tri_05
on test after insert
as
begin
update test set name = name + ',5' where id in (select id from inserted)
end
go
-- 写一条记录
insert into test(name) values('xxx')
go
-- 干掉并重建第 3 个TRI
drop trigger test_tri_03
go
create trigger test_tri_03
on test after insert
as
begin
update test set name = name + ',3' where id in (select id from inserted)
end
go
-- 再写一条记录
insert into test(name) values('yyy')
go
select * from test
go
drop table test
go
id name
----------- ------------------------------
1 xxx,1,2,3,4,5
2 yyy,1,2,4,5,3
(2 行受影响)