如何识别与sybase数据库中的表关联的触发器?

时间:2008-11-25 19:11:48

标签: sql triggers sybase

我正在使用SQL Advantage,需要知道SQL是什么来识别与表关联的触发器。我没有选择使用其他工具,所以老式的SQL解决方案是理想的答案。

8 个答案:

答案 0 :(得分:11)

我也发现了

sp_depends <object_name> 

将向您显示有关表的大量信息,包括与其关联的所有触发器。使用它,以及Ray的查询可以更容易地找到触发器。结合Ray的链接文章中的查询:

sp_helptext <trigger_name>

你可以看到触发器的定义:

sp_depends <trigger_name>

还会显示与触发器相关的所有表格

答案 1 :(得分:10)

select *
from sysobjects
where type = 'TR'

取自here

答案 2 :(得分:5)

显示触发器并为表创建sql:

select so.name, text
from sysobjects so, syscomments sc
where type = 'TR'
and so.id = sc.id
and text like '%TABLENAME%'

答案 3 :(得分:3)

SELECT 
    T.name AS TableName
    ,O.name  TriggerName  
    FROM sysobjects O 
    INNER JOIN sys.tables T ON T.object_id = O.parent_obj
    WHERE O.type = 'TR' AND T.name IN ('tableNames')
ORDER BY TableName

答案 4 :(得分:1)

我认为(或者至少是'是')某些问题依赖信息并不总是准确的。因此,我会尝试这样做:

select name
from sysobjects
where xtype='TR'
and id in (select id from syscomments where text like '%MY-TABLE-NAME%')
祝你好运。

PS-这是未经测试的代码,如果它不起作用则发表评论,我会修复它。

答案 5 :(得分:0)

  1. 打开Sybase Central并导航到触发器视图。
  2. 点击&#34;对象名称&#34;要排序的列。
  3. &#34;对象名称&#34;列显然显示与触发器关联的表。向下滚动到您感兴趣的表格。

答案 6 :(得分:0)

我会使用以下代码,以确保您获得正确的对象。从Sybase 16开始,这将不再完整,因为在一个表上可能有更多相同类型的触发器。

    select tr.id, tr.name, tr.type, tr.crdate, tr.loginame
from sysobjects u
  join sysobjects tr on tr.id in (u.instrig, u.deltrig, u.updtrig, u.seltrig)
where u.name = 'TABLENAME'

答案 7 :(得分:0)

我正在使用SQL Anywhere 16,很容易找到特定表的触发器。当您打开表格时,会有一个名为“触发器”的选项卡。但是查找所有触发器的查询与上面的答案有些不同:

dotnet pack interfaces.csproj /p:NuspecFile="bin\debug\interfaces.nuspec"