【问题标题】:T-SQL trigger and table nameT-SQL 触发器和表名
【发布时间】:2016-02-07 23:42:09
【问题描述】:

在触发器内部,我想知道触发触发器的表的名称:是否可以通过 T-SQL 以编程方式获取它?

【问题讨论】:

  • 愚蠢的问题:你创建触发器时不知道表名吗?
  • 我的问题没那么傻:认为你想用自动化的 sql 批处理向数据库中的所有表添加相同的触发器,然后你看到你的代码不能显示一个硬编码的表名称,如果您需要该名称,它必须依赖于自己找到的表名,不是吗?
  • 好吧,即使您使用自动 SQL 批处理,问题仍然存在:您不知道触发器生成器工具中的表名吗?我想您正在遍历所有表格等...

标签: sql-server triggers


【解决方案1】:

您可以使用@@procid 来执行此操作,例如

USE tempdb
GO

CREATE TABLE dbo.triggerTest ( rowId INT IDENTITY PRIMARY KEY, someData VARCHAR(50) DEFAULT NEWID() )
GO

CREATE TRIGGER dbo.itrg_triggerTest  ON dbo.triggerTest
FOR INSERT
AS

--SELECT @@PROCID, OBJECT_NAME( @@PROCID ) 

SELECT OBJECT_SCHEMA_NAME( parent_id ) + '.' + OBJECT_NAME( parent_id ) tableName FROM sys.triggers WHERE object_id = @@PROCID
GO

INSERT INTO dbo.triggerTest DEFAULT VALUES
GO

DROP TABLE dbo.triggerTest
GO

【讨论】:

    猜你喜欢
    • 2011-06-13
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    相关资源
    最近更新 更多