SQLスクリプトを作成してテーブルにトリガを作成するとき、トリガが作成される前にトリガが存在していないことを確認する必要がありました。それ以外の場合は、スクリプトを複数回実行することはできません。SQL:CREATE TRIGGERに先行する必要がある理由
トリガーが存在するかどうか最初に確認するステートメントを追加しました。その文を追加した後、CREATE TRIGGER文は機能しなくなりました。
IF NOT EXISTS (SELECT name FROM sysobjects
WHERE name = 'tr_MyTable1_INSERT' AND type = 'TR')
BEGIN
CREATE TRIGGER tr_MyTable1_INSERT
ON MyTable1
AFTER INSERT
AS
BEGIN
...
END
END
GO
これが与える:
Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'TRIGGER'.
をソリューションは、既存のトリガーを削除してから新しいものを作成するために、次のようになります。
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'tr_MyTable1_INSERT' AND type = 'TR')
DROP TRIGGER tr_MyTable1_INSERT
GO
CREATE TRIGGER tr_MyTable1_INSERT
ON MyTable1
AFTER INSERT
AS
BEGIN
...
END
GO
私の質問があります:w最初の例は失敗ですか?トリガーが存在するかどうかチェックするのは何が問題なのですか?
作成と同じ問題が発生しますか? – JeffO