我们可以通过使用sp_settriggerorder
命令来设置触发器的命令选项为第一,最后还是无。我想知道设置触发顺序的意义。何时需要使用此选项?我使用SQL Server 2008 R2
。设置触发命令的使用情况
0
A
回答
2
一个目的是如果你希望一个触发器在其他触发器(可能有昂贵的动作)触发之前执行某种形式的理智检查。如果first
触发造成ROLLBACK
发生,其他的触发器不会被触发:
create table T (
ID int not null
)
go
create trigger T1
on T
after insert
as
RAISERROR('T1',10,1) WITH NOWAIT
go
create trigger T2
on T
after insert
as
RAISERROR('T2',10,1) WITH NOWAIT
go
create trigger T3
on T
after insert
as
RAISERROR('T3',10,1) WITH NOWAIT
go
sp_settriggerorder 'T1','First','Insert'
go
sp_settriggerorder 'T3','Last','Insert'
go
insert into T(ID) values (1)
--T1
--T2
--T3
--(1 row(s) affected)
go
alter trigger T1
on T
after insert
as
RAISERROR('T1',10,1) WITH NOWAIT
ROLLBACK TRANSACTION
go
insert into T(ID) values (2)
--T1
--Msg 3609, Level 16, State 1, Line 1
--The transaction ended in the trigger. The batch has been aborted.
0
It specifies当多个触发器应用于SQL语句时,以何种顺序触发AFTER触发器。您只能为特定的表,数据库或服务器指定一个第一个或最后一个触发器。
相关问题
- 1. 在命令行中运行命令时的CPU使用情况
- 2. 如何使用命令的触发块
- 3. Postgres触发器会在任何情况下设置修改值?
- 4. WPF触发命令
- 5. 如何在不使用gradle发布命令的情况下发布Gradle工件
- 6. 使用valgrind跟踪管道命令的内存使用情况
- 7. 使用情况下没有设置
- 8. 触发器没有通过使用命令拷贝来触发
- 9. 我应该使用“从包导入使用情况,设置”或“从。导入使用情况,设置”
- 10. cf应用命令的CF内存使用情况
- 11. 使用命令设置EObject的资源
- 12. 在没有命令行的情况下使用带IntelliJ的SVN
- 13. 如何在不触发slider1_ValueChanged的情况下设置C#滑块的值
- 14. 设置触发
- 15. 在没有命令行的情况下使用Catalyst
- 16. 在Matlab中没有coder.extrinsic的情况下使用Sim()命令
- 17. MFC触发器ID_FILE_OPEN命令
- 18. WebClient事件触发命令
- 19. 根据情况设置ImageView
- 20. 使用latexpdf忽略命令行设置
- 21. 使用离子设置的使用情况
- 22. 默认情况下修改默认命令:默认命令为
- 23. 在不使用GUI的情况下设置TFS 2013 SharePoint配置
- 24. 如何使用chrome.com命令触发另一个扩展中定义的命令
- 25. PHP命令行脚本 - 程序使用情况文本
- 26. 使用SQL触发器设置datetime列
- 27. 使用BeginInvoke设置RelayCommand时未触发
- 28. 在不使用nice和/或renice命令的情况下设置进程的优先级
- 29. 我可以在这种情况下使用触发器吗?
- 30. MSTest的命令行设置
它似乎是在按订单执行触发器不差。你能说一个描述设置触发器订单成本的例子吗? – 2012-07-09 06:56:38
我不确定我明白你的意思。应用触发器订单的成本可以忽略不计。 – 2012-07-09 09:33:30