是否有可能在触发器执行中获取有关触发器的信息?

时间:2016-09-20 09:41:38

标签: sql tsql

我希望创建一个可用于覆盖触发器执行的表(因此,根据数据库值单独打开和关闭它们)。我有兴趣通过使用表名和触发器名称来实现这一点,以解释多个触发器,这引出了我感兴趣的问题;是否有可能在执行触发器的过程中获取有关触发器的信息,例如其名称及其执行的表?

1 个答案:

答案 0 :(得分:2)

在SQL Server中,您可以使用@@ PROCID和OBJECT_NAME函数来获取正在执行的触发器(或存储过程)的名称。例如:

CREATE TABLE MyTable (SomeColumn INT)

GO
CREATE TRIGGER MyTrigger ON dbo.MyTable 
FOR INSERT
AS
PRINT OBJECT_NAME(@@PROCID)
DECLARE @TableName sysname
SET @TableName=(SELECT OBJECT_NAME(parent_object_id) FROM sys.objects WHERE object_id=@@PROCID)
PRINT @TableName

GO
INSERT INTO dbo.MyTable (SomeColumn) VALUES (1)