MSforeachtable не выполняет триггеры
У меня есть следующие триггеры, которые я хочу выполнить для каждой таблицы в моей базе данных:
EXECUTE sp_MSforeachtable @command1 =
'IF EXISTS (SELECT * FROM sys.triggers
WHERE Object_ID = Object_ID("Insert_Serverdate_Into_CreatedAt"))
DROP TRIGGER Insert_Serverdate_Into_CreatedAt
GO
CREATE TRIGGER Insert_Serverdate_Into_CreatedAt ON ?
AFTER INSERT
AS
BEGIN
INSERT INTO ? (CreatedAt) VALUES(GETDATE())
END
GO
IF EXISTS (SELECT * FROM sys.triggers
WHERE Object_ID = Object_ID("Insert_Serverdate_Into_UpdatedAt"))
DROP TRIGGER Insert_Serverdate_Into_UpdatedAt
GO
CREATE TRIGGER Insert_Serverdate_Into_UpdatedAt ON ?
AFTER UPDATE
AS
BEGIN
INSERT INTO ? (UpdatedAt) VALUES(GETDATE())
END
GO'
Я получаю следующие ошибки для каждой таблицы:
Msg 102, Level 15, State 1, Line 4
Incorrect syntax near 'GO'.
Msg 111, Level 15, State 1, Line 6
'CREATE TRIGGER' must be the first statement in a query batch.
Msg 102, Level 15, State 1, Line 12
Incorrect syntax near 'GO'.
Msg 102, Level 15, State 1, Line 17
Incorrect syntax near 'GO'.
Msg 102, Level 15, State 1, Line 25
Когда я пытаюсь это запустить без процедуры MSforeachtable только на одной таблице, это работает. Кто-нибудь знает, что не так с запросом выше?
Спасибо
РЕДАКТИРОВАТЬ:
Я даже пытался разделить оба утверждения на две команды и оставить DROP TRIGGER
из. Просто создаю его, если его не существует. Теперь я получаю сообщение об ошибке, что синтаксис неправильный возле ключевого слова TRIGGER