2010-11-17 2 views
4

Я новичок в SQL. Я читаю о триггерах в SQL. У меня почти триггеры. Но в DML Triggers мы используем ключевое слово FOR/AFTER. Я не получил разницу между FOR/AFTER и почему мы используем ключевое слово FOR/AFTER. Я уже читал на MSDN, но не получил простой ответ. Может ли кто-нибудь объяснить мне, что это?FOR/AFTER в триггерах SQL

Заранее спасибо.

ответ

7

Там нет никакой разницы между использованием пО и ПОСЛЕ.

Я считаю, что исходный (pre 2000) синтаксис использовался только для ключевого слова FOR. Однако, когда введены триггеры INSTEAD OF, ключевое слово «FOR» может показаться довольно запутанным. «ПОСЛЕ» более точно передает тип триггера и более легко отличается от «INSTEAD OF».


INSTEAD OF, триггер будет использоваться, если мы хотим, чтобы превратить то, что был вставлен в таблицу, или предотвратить вставку из место.

Триггер AFTER более обычно используется, если мы хотим выполнить дополнительные задачи, исходя из того, что только что произошло. Например, у вас может быть триггер «AFTER DELETE», который скопировал удаленные строки в какую-то таблицу архивов. В принципе, в триггере AFTER вы, как правило, все еще хотите, чтобы активность выполнялась.

+0

благодарю вас за ответ. триггера, мы можем избежать сценария, который написан пользователем, и мы можем использовать наш скрипт. Так вы можете сказать мне, почему мы используем FOR | AFTER –

2

От MSDN:

ПОСЛЕ триггеры никогда не выполняются, если происходит нарушение ограничения; поэтому эти триггеры не могут использоваться для любой обработки, которая может препятствовать нарушениям ограничений.

И then:

Вы можете запросить ПОСЛЕ триггеров, указав либо после или для ключевых слов. Поскольку ключевое слово FOR имеет тот же эффект, что и AFTER, триггеры DML с ключевым словом FOR также классифицируются как триггеры AFTER.

Казалось бы, нет никакой разницы.

+0

Благодарим вас за ответ. Как в случае с триггером, мы можем избежать сценария, написанного пользователем, и мы можем использовать наш скрипт. Так вы можете сказать мне, почему мы используем FOR | AFTER –

+0

Ну, вот почему я опубликовал первая цитата. Триггер 'AFTER' выполняется * после того, как * действие происходит, но только тогда, когда оно завершается успешно, а не в случае сбоя из-за, например, нарушения ограничения. Триггер «INSTEAD OF» заменяет действие и может также предотвратить действие. – thomaspaulb

1

Они такие же. См. Этот отрывок из BOL " FOR | ПОСЛЕ ПОСЛЕ того, что триггер DML запускается только тогда, когда все операции, указанные в инициирующем операторе SQL, выполнены успешно. Все этапы каскадного управления и проверки ограничений также должны быть успешными до запуска этого триггера.

ПОСЛЕ по умолчанию, когда FOR является единственным ключевым словом указывается.

ПОСЛЕ триггеры не могут быть определены на представлениях. "

+0

Благодарим вас за ответ. Как в случае с триггером, мы можем избежать сценария, написанного пользователем, и мы можем использовать наш скрипт. Так вы можете сказать мне, почему мы используем FOR | AFTER –

2

Если я правильно интерпретирую ваши комментарии к другим ответам, вы хотите знать, почему или когда используются ключевые слова «FOR | AFTER».

Это просто: есть три типа триггеров: триггер AFTER и триггер INSTEAD-OF.
Включение INSTEAD-OF, например.действие вставки может быть записано в виде

create trigger myTrigger on myTable 
INSTEAD OF insert 
begin 
    (... code goes here ...) 
end 

и ПОСЛЕ-триггер может быть записан в виде либо

create trigger myTrigger on myTable 
AFTER insert 
begin 
    (... code goes here ...) 
end 

или

create trigger myTrigger on myTable 
FOR insert 
begin 
    (... code goes here ...) 
end 

Как отмечает Damien_The_Unbeliever, то ПОСЛЕ ключевого слова более читаемый, чем версия FOR, вот и все.

+0

Спасибо Кристиан :) –

+0

Кстати, что вы подразумеваете под «мы можем избежать сценария который написан пользователем, и мы можем использовать наш скрипт »? –

0

В соответствии с тем, что я наблюдаю, FOR используется для запуска DDL, в то время как AFTER используется в триггерах DML. У них одинаковый способ работы.

Смежные вопросы