create or replace trigger emp
--before 表示對操作前的觸發器
-- after 表示對操作後的觸發器
--每張表最多可建立12個觸發器
--before inset
--before insert for each row
--after insert
--after insert for each row
--before uPdate
--before uPdate for each row
--after uPdate
--after uPdate for each row
--before uPdate
--before uPdate for each row
--after uPdate
--after uPdate for each row
--執行的順序是:#1. 執行before語句級的觸發器,對於受語句影響的每一行:
-- #2. 執行級觸發器,執行DML語句
--執行after行級的觸發器
--#3. 執行 after語句級的觸發器
before delete on aaa --刪除操作前aaa表的觸發器
for each row --對錶的每一行觸發器執行一次。如果沒有這一選項,則只對整個表執行一次。
declare
begin
/*如果插入的任然是aaa表的話,會出現:第 1 行出現錯誤:
ORA-04091: 表 QUERY.AAA 發生了變化, 觸發器/函數不能讀它
ORA-06512: 在 "QUERY.EMP", line 4 (QUERY表示user,line表示行數,EMP表示觸發器名稱)
ORA-04088: 觸發器 'QUERY.EMP' 執行過程中出錯*/
/*將修改前的資料插入到日誌表aaa_tmp裡去,以供監督使用*/
insert into aaa_tmp(AID,ANAME,PRICE)
values(:old.AID,:old.ANAME,:old.PRICE);--:old表示原來的資料,
--:new表示插入的新資料
end emp;