1
SQL Serverのトリガーをデバッグする(リバースエンジニア)必要があります。トリガーはAFTER INSERT, UPDATE
トリガーです。トリガの開始時にSQL Serverトリガ:INSERTEDおよびDELETEDは存在しません。それは何ですか?
は、以下のIF
句がある:
if not exists(select 1 from inserted) and not exists(select 1 from deleted)
begin
print 'something'
return
end
コードは、このIF
に実行され、テキストsomething
が印刷されます。私は、なぜこれが起こるのだろうか?トリガーをトリガーするそれぞれのテーブルにUPDATE
を実行します。 IF
は基本的にとなります。挿入ではなく削除である場合。したがって、UPDATE
は基本的にDELETE
+ INSERT
であるため、print
文が実行される理由は不思議です。
「INSTEAD OF」トリガーを使用することを意味すると思いますか?これは 'inserted'と' deleted'テーブルを保持します。 'AFTER INSERT'は' inserted'テーブルIMOだけを保持します。 – NickyvV
'update t set a = bここで1 = 0' –
そして、何かが実際に他の場所から印刷されるという変更があります。 –