觸發器的簡單定義

先看例子(將表與序列關聯):

create or replace trigger TRG_student        --定義觸發器名稱

before insert         --定義觸發時間和觸發事件

on student            --定義要操作的表

for each row        --說明是行觸發器,無此行時說明是語句觸發器

begin                   --個人理解,應該是表示pl/sql語句塊的開始

select SEQ_student.nextval into :new.student_id from dual              --注意new前的冒號!

end;                    --個人理解,應該是表示pl/sql語句塊的結束

例子二:

--個人理解,應該是表示pl/sql語句塊的開始

create trigger TRG_student

before insert or update

on student

for each row

when(new.gender='B')       --注意此時new前沒加冒號!

begin                                    --語句塊內的必須要加!

if(:new.score<60) then

:new.score:=61;

end if;

end;

REFERENCING 子句說明相關名稱,在行觸發器的PL/SQL塊和WHEN 子句中可以使用相關名稱參照當前的新、舊列值,默認的相關名稱分別爲OLD和NEW。觸發器的PL/SQL塊中應用相關名稱時,必須在它們之前加冒號(:),但在WHEN子句中則不能加冒號

每個表中最多定義12種觸發器,知道是哪幾個嗎?



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章