SQL触发器递归更新

时间:2009-12-19 13:32:50

标签: sql triggers

我有一个组织数据库,每个员工都有一个外键给它的老板(FID)。

表格声明:

Create Table Emp(
    ID  integer,
    FID integer,
    SALARY integer,
    Primary key (ID), 
    foreign key (FID) references EMP
);

以下sql触发器应该更新老板下的员工。然后递归更新他们的孩子。但它只更新一个级别。

CREATE TRIGGER SAL_TRIG ON EMP After UPDATE
as
declare @SALARY int  
declare @OLDSAL int 
declare @ID int      

--use the 'inserted' keyword to access the values inserted into the invoice table
select @OLDSAL = Salary from deleted
select @SALARY = Salary from inserted 
select @ID = ID from inserted


BEGIN
    UPDATE EMP 
    SET SALARY = salary + @SALARY - @OLDSAL
    WHERE FID = @ID
END

我想知道如何解决这个问题。 谢谢。

1 个答案:

答案 0 :(得分:2)

假设这是SQL Server,您需要使用sp_dboption启用递归触发器。有关详细信息,请参阅MSDN:

http://msdn.microsoft.com/en-us/library/ms189799.aspx