Таблица TMSEMP
хранит информацию о сотрудниках c. Таблица CHANGES
предназначена для регистрации изменений в этой таблице.
Триггер ниже находится на TMSEMP
для записи этих изменений, когда для CHANGEFLAG
установлено значение Y.
ALTER TRIGGER [XUSER].[Update_Changes Table]
ON [XUSER].[TMSEMP]
AFTER INSERT, UPDATE
AS
declare @empref as varchar(10)
declare @date1 as Datetime
declare @changeflag as varchar (10)
declare @firstnames as varchar(20)
set @empref = (select empref from inserted)
set @date1=(select getdate())
set @changeflag =(select changeflag from inserted )
set @firstnames = (select firstnames from inserted)
if @changeflag='Y'
begin
-- INSERT INTO CHANGES TABLE
insert into XUSER.CHANGES (empref,autokey,changedate,changefield,newvalue)
select @empref, (select max(autokey)+1 from XUSER.changes),@date1,'FIRSTNAMES',@firstnames
--RESET CHANGEFLAG BACK TO N
update XUSER.tmsemp set changeflag='N' where empref=@empref
end
Проблема У меня есть, что 2 записи пишутся в ИЗМЕНЕНИЯ.
Если я удаляю приведенную ниже
--RESET CHANGEFLAG BACK TO N
update XUSER.tmsemp set changeflag='N' where empref=@empref
1 запись отправлена правильно -> Однако поле остается как Y, но должно быть N.
Как я могу остановить запись публикуется дважды.
AUTOKEY CHANGEFIELD CHANGEDATE NEWVALUE
9 FIRSTNAMES 2020-01-09 20:51:02.493 Shane5
10 FIRSTNAMES 2020-01-09 20:51:02.607 Shane5