LaB*_*cca 13 sql-server triggers sql-server-2008-r2
我的应用程序基于sql server db.
除自定义外,所有客户都具有相同的数据库.
一些自定义包括:新表,修改表,自定义视图,自定义触发器......
当我运行软件更新时,会执行一些脚本.现在我在脚本完成后手动禁用触发器并重新启用.
无论如何,我想自动禁用所有触发器(已启用,可能已经禁用其中一些),然后在最后重新启用它们.
不要重新发明,怎么做?
如何只获取当前数据库上的活动触发器?
一旦我得到这个,我可以以编程方式创建和运行
DISABLE TRIGGER triggername ON TABLENAME
ENABLE TRIGGER triggername ON TABLENAME
Run Code Online (Sandbox Code Playgroud)
Jaq*_*ues 21
select objectproperty(object_id('TriggerName'), 'ExecIsTriggerDisabled')
Run Code Online (Sandbox Code Playgroud)
1表示真,0表示明显错误
使用Jeff O的查询并稍微修改一下
SELECT
TAB.name as Table_Name
, TRIG.name as Trigger_Name
, TRIG.is_disabled --or objectproperty(object_id('TriggerName'), 'ExecIsTriggerDisabled')
FROM [sys].[triggers] as TRIG
inner join sys.tables as TAB
on TRIG.parent_id = TAB.object_id
Run Code Online (Sandbox Code Playgroud)
或者将其添加为where子句.
where TRIG.is_disabled = 0 -- or 1 depends on what you want
Run Code Online (Sandbox Code Playgroud)
Lam*_*mak 11
SELECT *
FROM sys.triggers
WHERE is_disabled = 0
Run Code Online (Sandbox Code Playgroud)
SELECT
TAB.name as Table_Name
, TRIG.name as Trigger_Name
FROM [sys].[triggers] as TRIG
inner join sys.tables as TAB
on TRIG.parent_id = TAB.object_id
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64551 次 |
| 最近记录: |