SQL: Warum funktioniert ein CREATE TRIGGER muss vorangestellt werden, GEHEN

Wenn Sie eine SQL-Skript zum erstellen Sie einen trigger auf einer Tabelle, die ich wollte, um zu überprüfen, dass der trigger nicht bereits vorhanden, bevor ich ihn erstellen. Anderenfalls wird das Skript nicht ausgeführt werden kann, mehrere Male.

Also ich habe eine Anweisung überprüfen Sie zuerst, ob der trigger vorhanden ist. Nach dem hinzufügen, dass die Aussage, die CREATE TRIGGER-Anweisung nicht mehr funktioniert.

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

Gibt es:

Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'TRIGGER'.

Die Lösung wäre, löschen Sie die vorhandene trigger und erstellen Sie dann die neue ein:

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

Meine Frage ist: warum ist das erste Beispiel Fehler? Was ist so falsch mit der überprüfung der trigger vorhanden ist?

Schreibe einen Kommentar