4

挿入されたテーブルには常に挿入または更新のレコードが含まれ、削除されたテーブルには常に更新のレコードが含まれるという前提でTSQLトリガーを使用しています(削除は無視しています)。

関連するMSDNの記事は次のとおりです。

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

ただし、挿入と削除の両方が空である状況に遭遇しました。これが私が使用しているテストトリガーです。

CREATE TRIGGER [dbo].[InsertUpdateTest] ON [dbo].[Test] 
AFTER INSERT, UPDATE 
AS
    DECLARE @countInserted INT
    DECLARE @countDelete INT

    SET @countInsert = (SELECT COUNT(*) FROM INSERTED)
    SET @countDeleted = (SELECT COUNT(*) FROM DELETED)

    IF (@countInserted = 0 AND @countDelete = 0)
    BEGIN
        print 'Inserted and deleted are both empty'
    END

これはどのような条件下で発生しますか?

4

1 に答える 1

6

私自身の質問に答えます。これは、トリガーされたテーブルの更新ステートメントが行を更新しない場合に発生します。トリガーは引き続き起動しますが、挿入および削除されたテーブルは空になります。例えば:

UPDATE Test Set somefield=0 WHERE id='Values does not exist'
于 2012-08-03T07:42:52.580 に答える