2009-12-19 8 views
0

J'ai une base de données organisationnelle dans laquelle chaque employé a une clé étrangère à son patron (FID).SQL Trigger récursif mise à jour

Table déclaration:

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

Le déclencheur SQL suivante devrait mettre à jour les employés sous un patron. Et puis mettre à jour leurs enfants récursivement. mais il ne met à jour qu'un seul niveau.

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 

Je veux savoir comment résoudre ce problème. Merci.

Répondre