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