При создании сценария SQL для создания триггера на столе я хотел проверить, что триггер еще не существует, прежде чем я его создаю.В противном случае скрипт не может быть запущен несколько раз.
Поэтому я добавил инструкцию, чтобы сначала проверить, существует ли триггер.После добавления этого оператора оператор CREATE TRIGGER больше не работает.
IF NOT EXISTS (SELECT name FROM sysobjects
WHERE name = 'tr_MyTable1_INSERT' AND type = 'TR')
BEGIN
CREATE TRIGGER tr_MyTable1_INSERT
ON MyTable1
AFTER INSERT
AS
BEGIN
...
END
END
GO
Это дает:
Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'TRIGGER'.
Решение состоит в том, чтобы удалить существующий триггер, а затем создатьновый:
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'tr_MyTable1_INSERT' AND type = 'TR')
DROP TRIGGER tr_MyTable1_INSERT
GO
CREATE TRIGGER tr_MyTable1_INSERT
ON MyTable1
AFTER INSERT
AS
BEGIN
...
END
GO
Мой вопрос : почему первый пример терпит неудачу?Что такого плохого в проверке существования триггера?