解析Oracle觸發(fā)器的語法
導(dǎo)讀:觸發(fā)器是一種特殊的存儲過程,觸發(fā)器的執(zhí)行不是由程序調(diào)用,也不是手工啟動,而是由事件來觸發(fā),Oracle數(shù)據(jù)庫是大家非常熟悉的數(shù)據(jù)庫系統(tǒng)啦,那么Oracle觸發(fā)器的語法是怎樣的呢?下文中將為大家?guī)碓敿?xì)的解析。
ORACLE 觸發(fā)器
ORACLE產(chǎn)生數(shù)據(jù)庫觸發(fā)器的語法為:
create [or replace] trigger 觸發(fā)器名 觸發(fā)時間 觸發(fā)事件
on 表名
[for each row]
pl/sql 語句
其中:
觸發(fā)器名:觸發(fā)器對象的名稱。由于觸發(fā)器是數(shù)據(jù)庫自動執(zhí)行 的,因此該名稱只是一個名稱,沒有實質(zhì)的用途。
觸發(fā)時間:指明觸發(fā)器何時執(zhí)行,該值可?。?/p>
before---表示在數(shù)據(jù)庫動作之前觸發(fā)器執(zhí)行;
after---表示在數(shù)據(jù)庫動作之后出發(fā)器執(zhí)行。
觸發(fā)事件:指明哪些數(shù)據(jù)庫動作會觸發(fā)此觸發(fā)器:
insert:數(shù)據(jù)庫插入會觸發(fā)此觸發(fā)器;
update:數(shù)據(jù)庫修改會觸發(fā)此觸發(fā)器;
delete:數(shù)據(jù)庫刪除會觸發(fā)此觸發(fā)器。
表 名:數(shù)據(jù)庫觸發(fā)器所在的表。
for each row:對表的每一行觸發(fā)器執(zhí)行一次。如果沒有這一選項,則只對整個表執(zhí)行一次。
舉例:下面的觸發(fā)器在更新表auths之前觸發(fā),目的是不允許在周末修改表:
create trigger auth_secure
before insert or update or delete file://對整表更新前觸發(fā)
on auths
begin
if(to_char(sysdate,'DY')='SUN'
RAISE_APPLICATION_ERROR(-20600,'不能在周末修改表auths');
( RAISE_APPLICATION_ERROR是函數(shù),括弧內(nèi)的,***參數(shù)范圍在-20000~20999之間,第二個
參數(shù)是字符串,大小在2k,超過的話,系統(tǒng)自動截斷)
end if;
end
上文中介紹的Oracle數(shù)據(jù)庫觸發(fā)器的語法知識并不是很全面,如果大家對這方面的知識比較感興趣,以后我還會繼續(xù)為大家介紹更多更詳細(xì)的知識,希望能夠幫助到大家。
【編輯推薦】