SQL Trigger Рекурсивное обновление - PullRequest
0 голосов
/ 19 декабря 2009

У меня есть организационная база данных, в которой каждый сотрудник имеет внешний ключ для своего начальника (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 Ответ

2 голосов
/ 19 декабря 2009

Предполагая, что это SQL Server, вам нужно включить рекурсивные триггеры, используя sp_dboption. См. MSDN для более подробной информации:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...