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