如何在sql server中获取触发器引用的表名?

时间:2015-12-29 09:28:08

标签: sql sql-server triggers dependencies

我有一个触发器,我希望这个触发器引用哪些表。对于sql server中的规则也是如此。我的数据库中有一个规则,我想要创建它的表名。 索引也是如此。

========================= EDIT ===================

如果发生以下触发定义:

CREATE TRIGGER [dbo].[trgAfterInsert] ON dbo.[Employee_Test] 
FOR INSERT
AS
    declare @empid int;
    declare @empname varchar(100);
    declare @empsal decimal(10,2);
    declare @audit_action varchar(100);

    select @empid=i.Emp_ID from inserted i; 
    select @empname=i.Emp_Name from inserted i; 
    select @empsal=i.Emp_Sal from inserted i;   
    set @audit_action='Inserted Record -- After Insert Trigger.';

    insert into Employee_Test_Audit
           (Emp_ID,Emp_Name,Emp_Sal,Audit_Action,Audit_Timestamp) 
    values(@empid,@empname,@empsal,@audit_action,getdate());

    PRINT 'AFTER INSERT trigger fired.'
GO

在这种情况下,2个表应显示为依赖表,Employee_TestEmployee_Test_Audit。如何获取这些名称?

2 个答案:

答案 0 :(得分:1)

试试这个

SELECT OBJECT_NAME(parent_id) AS tablename, *
FROM [databasename].sys.triggers

答案 1 :(得分:0)

您可以尝试以下代码: " sp_depends触发名称" 这将提供所有详细信息,如调用的存储过程和触发器引用的用户表。