SQL: Statement Triggers VS For Each Row

EDIT: Я не знаю, какой это дистрибутив, это в экзаменационной работе.

Я просто не понимаю этого, к сожалению. Меня вполне устраивают триггеры уровня строки, но не мог бы кто-нибудь объяснить мне, как будут отличаться результаты, если триггер будет на уровне оператора?

Relation/Statement Trigger/Row Level Trigger

Employee(ID VARCHAR2(30), Salary NUMBER)


Create Trigger AutoRaise
After insert on Employee
Referencing new table as NT
update Employee
Set salary = salary + (select avg(salary) from NT)


Create trigger AutoRaise
After insert on Employee
Referencing new table as NT
For each Row
Update employee
Set salary = salary + (select avg(salary) from NT)

Я понимаю, что в триггере для каждой строки он сработает для каждой строки, затронутой триггерным оператором. А триггер на уровне оператора будет по-другому изменять результаты? Скажем, если я вставлю пять кортежей в один оператор, будет ли он устанавливать зарплату и т.д. для всех них? Если да, то в чем преимущество триггера на уровне строки?

Я пробовал искать, но никак не могу разобраться.

Спасибо,

EDIT: Теперь, я просто туплю, но будет ли любой из триггеров давать разные результаты? Для триггера на уровне оператора, если я использую пример значений:

В таблице до создания триггера:

(A,50)

Добавлено в ОДНОМ операторе после создания триггера:

(B,70), (C,30)

Первый триггер установит зарплату для каждого вставленного кортежа, верно? Таким образом, первый станет 120 (так как среднее равно 50, 70 + 50 = 120), а второй станет 80. Если это так, то как второй триггер отличается по результатам?

7
задан Greg Hewgill 9 June 2014 в 20:40
поделиться