Hinzufügen "IF not EXISTS" create trigger-Anweisung
Ich bin mit sql server 2008 R2. Genauer gesagt, Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 lauten (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Standard Edition (64-bit) auf Windows NT 6.1 (Build 7601: Service Pack 1) (Hypervisor). Ich bin neu in sql server und Prozeduren/Trigger. Ich habe den folgenden code, um einen trigger erstellen (es funktioniert):
CREATE TRIGGER [dbo].[Insert_WithdrawalCodes]
ON [dbo].[PupilWithdrawalReason]
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
UPDATE [dbo].[PupilWithdrawalReason] SET DateCreated=dbo.SYSTEMTIME()
WHERE WithdrawalCodeID IN (SELECT WithdrawalCodeID FROM inserted)
END
Wie kann ich bedingt zu erstellen, nur wenn der trigger nicht vorhanden ist? Was mache ich hier falsch? Stackoverflow hat gute Beispiele von "nicht vorhanden", aber ich kann nicht ankommen dieses zu wirken in Verbindung mit einem ERSTELLEN. Hier ist einer meiner erfolglosen Bemühungen:
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type = 'TR' AND name = 'Insert_WithdrawalCodes')
exec('CREATE TRIGGER [dbo].[Insert_WithdrawalCodes] ON [dbo].[PupilWithdrawalReason] AFTER INSERT AS BEGIN SET NOCOUNT ON; UPDATE [dbo].[PupilWithdrawalReason] SET DateCreated=dbo.SYSTEMTIME() WHERE WithdrawalCodeID IN (SELECT WithdrawalCodeID FROM inserted) END')
GO
InformationsquelleAutor der Frage thebiggestlebowski | 2015-01-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Basierend auf den aktualisierten Frage... versuchen Sie dies:
InformationsquelleAutor der Antwort JStevens
Ist der beste Weg, um zu überprüfen, für Objekte und legen Sie Sie, wenn Sie vorhanden sind, bevor Sie Sie erstellen.
Dann eher nicht schaffen es überhaupt, wenn es vorhanden ist, würde ich den Ansatz der andere Weg, legen Sie, wenn vorhanden, und dann erstellen.
Normalerweise in langen ausführliches Skripte, wenn Sie aktualisieren möchten, die die definition einer trigger-würden Sie einfach fügen Sie diese am Ende der script-und trigger-definition aktualisiert werden.
Also der Ansatz sollte
create the object but drop it if it already exists
dann eherdont create it at all if it already exists
InformationsquelleAutor der Antwort M.Ali
Bestimmte Anweisungen wie CREATE TRIGGER muss die erste in einer Reihe (wie in, Gruppe von Anweisungen, getrennt durch GEHEN ).
https://msdn.microsoft.com/en-us/library/ms175502.aspx
Alternativ könnten Sie tun, diese
InformationsquelleAutor der Antwort Neel
Überprüfen, WENN Vorhanden Für Trigger
Prüfen, FALLS Vorhanden, Gespeicherte Prozedur , die Funktion auch durch klicken auf den link unten
http://www.gurujipoint.com/2017/05/check-if-exist-for-trigger-function-and.html
InformationsquelleAutor der Antwort Jatin Phulera