Sybase ASEデータベースにトリガを書き込んで、更新プログラムを起動し、更新前後の値を比較します。私は、更新が実際にデータを変更したかどうかを確認するためにこれを行います。この場合、監視テーブルに行が追加されます。残念ながら、トリガは、updateコマンドが1行だけに影響を与える場合にのみ機能します。それは複数の行に影響している場合、私はこのエラーを取得:sybase update trigger - 複数行の更新を確認します
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.
私procが次のようになります。
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
私は私のトリガー内でこのマルチアップデートの問題を回避することができますどのように任意のアイデア?
すべてのSPをしてください置きます。 –
@aF。私は上記のコードを編集しました – dom