【问题标题】:Sql Trigger - which table does it belong to?Sql Trigger - 它属于哪个表?
【发布时间】:2009-04-07 18:22:19
【问题描述】:

在 Sql Server 2005 触发器中是否有办法获取触发器在执行期间附加到的表的名称和架构?

【问题讨论】:

    标签: sql sql-server sql-server-2005 triggers


    【解决方案1】:
    SELECT
        OBJECT_NAME(parent_id) AS [Table],
        OBJECT_NAME(object_id) AS TriggerName
    FROM
        sys.triggers
    WHERE
        object_id = @@PROCID
    

    然后您还可以使用OBJECTPROPERTY 获取额外信息,例如之后/之前、删除/插入/更新、第一个/最后一个等

    【讨论】:

      【解决方案2】:

      这是一种肮脏的认识方式

      SELECT o.name
      FROM sysobjects t
      JOIN sysobjects o ON t.parent_obj = o.id
      WHERE t.name = 'your_trigger_name'
      

      [编辑]

      根据其他答案和cmets,我认为这适合您(MSSQL2000版本)

      SELECT o.name
      FROM sysobjects t
      JOIN sysobjects o ON t.parent_obj = o.id
      WHERE t.id = @@PROCID
      

      【讨论】:

      • 很遗憾,我也不知道运行时触发器的名称。
      • 你应该避免直接查询系统表,而是使用系统视图。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 2013-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多