używam oświadczenia drop trigger if exist TRIGGER
w sqlite, ale serwer sql nie lubi ifkomunikat. (Myślę, że istnieje obraźliwe słowo). Robię to tuż obok mojej instrukcji tworzenia wyzwalacza, ponieważ chcę usunąć starsze wyzwalacze o tej samej nazwie, aby móc je zastąpić nowym.
Jak to zrobić na serwerze SQL?
Odpowiedzi:
2 dla odpowiedzi № 1Możesz sprawdzić istnienie konkretnego wyzwalacza.
IF EXISTS
(
select name
from sys.objects
where type="TR" and name ="Trigger Name"
)
BEGIN
--Add your Trigger create code here
END
4 dla odpowiedzi nr 2
w SQL Server Management Studio (i myślę, że wQuery Analyzer) kliknij prawym przyciskiem myszy wyzwalacz w eksploratorze i wybierz opcję Skrypt-as, wybierz „Schowaj wyzwalacz” w schowku, a SSMS utworzy składnię T-SQL, aby upuścić ten wyzwalacz.
Przepraszam, nie dałem ci T-SQL, który możesz skopiować i wkleić, ale w ten sposób będziesz wiedział, jak to zrobić następnym razem.
2 dla odpowiedzi nr 3
Uważam, że jest to bardziej kompaktowy SQL Server równoważny MySQL DROP TRIGGER IF EXISTS
składnia:
IF OBJECT_ID("XXXX", "TR") IS NOT NULL
DROP TRIGGER XXXX
0 dla odpowiedzi nr 4
Użyłbym czegoś takiego:
IF objectproperty(object_id("dbo.xxx"), "isTrigger") = 1
DROP PROCEDURE dbo.xxx
GO
CREATE TRIGGER dbo.xxx [etc]
zamieniając xxx na nazwę wyzwalacza (i dbo na odpowiedni schemat, jeśli to konieczne).
Alternatywnie możesz po prostu użyć
ALTER TRIGGER dbo.xxx [etc]