Używam serwera sql 2008 R2. Dokładniej: Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 2 kwietnia 2010 15:48:46 Prawa autorskie (c) Microsoft Corporation Standard Edition (64-bit) w systemie Windows NT 6.1 (Kompilacja 7601: Service Pack 1) (Hypervisor). Jestem nowy w serwerze sql i procedurach/wyzwalaczach. Mam następujący kod do utworzenia wyzwalacza (działa):Jak dodać "JEŚLI NIE ISTNIEJ" do utworzenia instrukcji wyzwalacza
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
Jak warunkowo utworzyć tylko wtedy, gdy wyzwalacz jeszcze nie istnieje? Co ja tu robię źle? Stackoverflow ma dobre przykłady "jeśli nie istnieje", ale nie mogę tego zrobić w połączeniu z CREATE. Oto jeden z moich nieudanych wysiłków:
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
Zaktualizowałem mój fa Podany przykład. Dlaczego nie działa kod "exec"? Czy moja składnia jest błędna w utworze? – thebiggestlebowski