Sql server T-SQL触发器和表名

Sql server T-SQL触发器和表名,sql-server,triggers,Sql Server,Triggers,在触发器内部,我想知道触发触发器的表的名称:是否可以通过T-SQL以编程方式获取它?您可以使用@procid eg 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

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

您可以使用@procid eg

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

愚蠢的问题:当你创建触发器时,你难道不知道表名吗?我的问题不是那么愚蠢:如果你想用一个自动sql批处理将相同的触发器添加到数据库中的所有表中,那么你会发现你的代码不能显示硬编码的表名,它必须依赖于一个自找的表名,以防你需要这个名称,不是吗?即使您使用的是自动SQL批处理,问题仍然存在:您不知道触发器生成器工具中的表名吗?我想你正在遍历所有的表,等等。。。