如何在 Sybase ASE 16.0 中查找触发器状态(启用或禁用)?

How to find the trigger status (enabled or disbaled) in Sybase ASE 16.0?

我有一个 table,其中包含在不同模式中定义的多个触发器。我想知道每个触发器的启用状态。例如,我在 s1 中创建了一个 table 并在 s1 和 s2 中创建了 2 个具有相同名称的触发器。

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 在这里没有帮助,因为它没有给出模式,并且两个模式中的触发器具有相同的名称。有什么方法可以根据触发器的架构和名称找到触发器的状态?

正如我在回答关于 的其他问题时提到的,请查看 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