多个触发器

时间:2015-06-16 12:12:48

标签: tsql

我们可以在单个按钮点击事件中调用包含多个triggersw的调用的触发器吗?

因为有两个触发器如下:

插入后首先触发:

CREATE TRIGGER 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

其次是登录:

Alter TRIGGER user_confirmation ON ADMINISTRATOR

 FOR INSERT
 AS


  declare @ID varchar(20);
  declare @u_name varchar(20);

  declare @u_id varchar(20);
  set  @u_id= (select u_password from ADMINISTRATOR where u_name=@u_name);



  select @ID from Inserted I; 
  if(@ID=@u_id)

    print'Login Successfull'

 GO

我只想在trgAfterInsert触发器中调用user_confirmation。有可能吗?

1 个答案:

答案 0 :(得分:0)

您不能直接调用触发器。触发器将根据您的DML语句自动触发。允许使用嵌套触发器,您必须更改数据库设置。 请参阅以下链接了解详细信息。

https://msdn.microsoft.com/en-us/library/ms190739.aspx

表A上的DML语句触发一个触发器,该触发器依次更新某个表B,导致触发器B在该表B上触发

我认为你不需要多个触发器,而是从按钮点击事件调用存储过程