You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Sybase中查询激活触发器及其关联表的SQL语句

查询Sybase中激活状态的触发器及其关联表

要把触发器和它关联的表对应起来,你可以通过关联sysobjects系统表自身来实现——因为触发器和表的信息都存在这个表里。下面是两种可行的查询语句:

方法一:直接查询所有激活的触发器及对应表

SELECT
    tr.name AS 触发器名称,
    tb.name AS 关联表名称,
    CASE 
        WHEN tr.status & 2 = 0 THEN '激活'
        ELSE '禁用'
    END AS 触发器状态
FROM sysobjects tr
JOIN sysobjects tb ON tr.parent_obj = tb.id
WHERE tr.type = 'TR'
  AND tr.status & 2 = 0; -- 状态位为2表示触发器被禁用,这里只筛选激活状态的

方法二:从表出发,查询带激活触发器的表及对应触发器

SELECT
    tr.name AS 触发器名称,
    tb.name AS 关联表名称,
    CASE 
        WHEN tb.deltrig = tr.id THEN '删除触发器'
        WHEN tb.instrig = tr.id THEN '插入触发器'
        WHEN tb.updtrig = tr.id THEN '更新触发器'
    END AS 触发器类型,
    '激活' AS 触发器状态
FROM sysobjects tb
JOIN sysobjects tr ON tb.deltrig = tr.id OR tb.instrig = tr.id OR tb.updtrig = tr.id
WHERE tb.type = 'U'
  AND tr.status & 2 = 0;

对你之前SQL的修正说明:

  1. 语法错误:你连续写了两个WHERE子句,这是不合法的,必须合并成一个
  2. 逻辑错误:deltrig、instrig、updtrig是表的字段,存储的是对应操作的触发器ID,并非触发器自身的字段,不能直接用来过滤触发器

内容的提问来源于stack exchange,提问作者user84

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 17:22:50