我正在使用SQL Advantage,需要知道SQL是什么来识别与表关联的触发器。我没有选择使用其他工具,所以老式的SQL解决方案是理想的答案。
答案 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)
&#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"