如何识别与sybase数据库中的表关联的触发器?
问题描述:
我正在使用SQL Advantage,需要知道SQL是用来识别与表关联的触发器的。我没有选择使用其他工具,所以老式的SQL解决方案是理想的答案。如何识别与sybase数据库中的表关联的触发器?
答
我还发现,
sp_depends <object_name>
会告诉你很多关于表的信息,包括所有与之相关的触发器。通过使用它,与Ray的查询一起可以更容易地找到触发器。从雷的链接文章这个查询相结合:
sp_helptext <trigger_name>
,你可以看到触发的定义:
sp_depends <trigger_name>
也将告诉你相关的触发
答
我相信所有的表(或者至少是'是')某些依赖信息并不总是准确的问题。因此,我会尝试像这样来处理它:
select name
from sysobjects
where xtype='TR'
and id in (select id from syscomments where text like '%MY-TABLE-NAME%')
祝你好运。
PS-这是未经测试的代码,如果它不起作用,请留言,我会解决它。
答
显示触发器和用于创建表的SQL:
select so.name, text
from sysobjects so, syscomments sc
where type = 'TR'
and so.id = sc.id
and text like '%TABLENAME%'
答
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
答
- 打开Sybase Central并导航到触发查看。
- 点击“对象名称”列进行排序。
“对象名称”列显然显示与触发器关联的表。向下滚动至您感兴趣的表格。
答
我会使用以下代码,以确保您获得正确的对象。由于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'
谢谢雷,我昨天一直在搜索,但从未找到那篇文章。它在那里拥有丰富的有用信息。 – 2008-11-26 18:06:34