我有一个表,在不同的模式中定义了多个触发器。我想知道每个触发器的启用状态。例如,我在s1中创建了一个表,并在s1和s2中创建了两个具有相同名称的触发器。
Create table s1.sometable (---);
create trigger s1.xyz on s1.sometable as -- trigger body--;
create trigger s2.xyz on s1.sometable as -- trigger body--;
alter table s1.sometable disable trigger s2.xyz ;
使用sp_helptrigger在这里没有帮助,因为它没有给出两个模式中的模式和触发器具有相同的名称。有没有办法在给定模式和名称的情况下找到触发器的状态?
答案 0 :(得分:1)
正如我在回答您关于How to find triggers along with schemas in ASE 16.0的其他问题时提到的那样,请查看 sp_helptrigger 的源代码。
从 sp_helptrigger 的源代码中我们可以看到:
-- status for sysobjects.instrig
sysobjects.systat2 & 1048576 != 0 => disabled
sysobjects.systat2 & 1048576 = 0 => enabled
-- status for sysobjects.deltrig
sysobjects.systat2 & 2097152 != 0 => disabled
sysobjects.systat2 & 2097152 = 0 => enabled
-- status for sysobjects.updtrig
sysobjects.systat2 & 4194304 != 0 => disabled
sysobjects.systat2 & 4194304 = 0 => enabled
-- status for triggers stored in syscontraints
syscontraints.status & 4096 != 0 => disabled
syscontraints.status & 4096 = 0 => enabled