В чем разница между FOR
и AFTER
спусковой?
В чем разница между FOR
и AFTER
спусковой?
Ответы:
Нет никакой разницы, они делают то же самое.
CREATE TRIGGER trgTable on dbo.Table FOR INSERT,UPDATE,DELETE
Такой же как
CREATE TRIGGER trgTable on dbo.Table AFTER INSERT,UPDATE,DELETE
INSTEAD OF
Триггер отличается, и срабатывает перед и вместо вставки и может быть использован на представлениях, для того , чтобы вставить соответствующие значения в базовых таблицы.
@Ben абсолютно прав.
Вот статья MSDN Изучение триггеров SQL Server
Абзац из статьи:
Этот синтаксис также приемлем в более старых версиях SQL Server. Однако теперь, когда в SQL Server 2000 есть два типа триггеров, я предпочитаю называть триггеры FOR триггерами AFTER. Таким образом, в оставшейся части этой статьи я буду ссылаться на триггеры AFTER или INSTEAD OF.
Как и триггер AFTER, который вы видели ранее, этот триггер предотвращает внесение изменений в поле фамилии. Однако это бизнес-правило реализуется иначе, чем в предыдущем примере. Поскольку триггер INSTEAD OF срабатывает вместо оператора UPDATE, триггер INSTEAD OF затем оценивает, прошел ли тест бизнес-правила или нет. Если проверка бизнес-правила прошла успешно, для того, чтобы обновление произошло, триггер INSTEAD OF должен снова явно вызвать оператор UPDATE.
AFTER указывает, что триггер DML запускается только тогда, когда все операции, указанные в запускающем операторе SQL, выполнены успешно. Все ссылочные каскадные действия и проверки ограничений также должны быть успешными, прежде чем сработает этот триггер. AFTER - это значение по умолчанию, если указано единственное ключевое слово FOR.
Триггеры AFTER не могут быть определены для представлений.
INSTEAD OF Указывает, что триггер DML выполняется вместо запускающего оператора SQL, таким образом, переопределяя действия запускающих операторов. INSTEAD OF нельзя указать для DDL или триггеров входа в систему.
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql