Я пишу триггер в базе данных Sybase ASE, который запускает обновление и сравнивает значение до и после обновления.Я делаю это, чтобы проверить, действительно ли обновление изменило данные.В этом случае он добавляет строку в таблицу мониторинга.К сожалению, триггер работает только в том случае, если команда обновления влияет только на 1 строку.Если это затрагивает более одной строки, я получаю эту ошибку:
Msg 512, Level 16, State 5:
Server 'myserver', Procedure 'myproc', Line 2:
Subquery returned more than 1 value. This is illegal when the subquery follows =, !=, <, <= , >, >=, or when the subquery is used as an expression.
мой процесс выглядит следующим образом:
create trigger mytrigger on mytable for update as
set nocount on
/* now do the insert if colum was updated */
if update(col_a) and (select col_a from inserted) not in (select col_a from deleted)
begin
insert into monitoring_table (login,tablename,field,action,pstamp)
select suser_name(),'mytable','col_a','U',getdate() from inserted
end
/* now do the insert if colum was updated */
if update(col_b) and (select col_b from inserted) not in (select col_b from deleted)
begin
insert into monitoring_table (login,tablename,field,action,pstamp)
select suser_name(),'mytable','col_b','U',getdate() from inserted
end
go
любая идея, как я могу обойти эту проблему мульти-обновления в моемвызвать?