Я использую SQL Server 2008 R2. В частности, Microsoft SQL Server 2008 R2 (окончательная первоначальная версия) - 10.50.1600.1 (X64), 2 апреля 2010 г., 15:48:46 Авторское право (c) Microsoft Corporation Standard Edition (64-разрядная версия) в Windows NT 6.1 (сборка 7601: пакет обновления 1). ) (Гипервизор). Я новичок в SQL Server и процедуры/триггеры. У меня есть следующий код для создания триггера (он работает):
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
Как условно создать только если триггер еще не существует? Что я здесь не так делаю? У Qaru есть хорошие примеры IF NOT EXISTS
, но я не могу заставить это работать вместе с CREATE
. Вот одна из моих неудачных попыток:
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