2017-07-21 120 views
-1

我有一個在不同架構中定義了多個觸發器的表。我想知道每個觸發器的啓用狀態。例如,我在s1中創建了一個表格,並在s1和s2中創建了兩個具有相同名稱的觸發器。如何查找Sybase ASE 16.0中的觸發器狀態(啓用或禁用)?

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這裏並沒有幫助,因爲它不給模式和觸發兩種模式中具有相同的名稱。鑑於其模式和名稱,是否有任何方法可以查找觸發器的狀態?

回答

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