oracle物件之觸發器

2022-08-26 04:12:10 字數 2218 閱讀 7197

觸發器

資料庫觸發器是乙個與表相關聯的、儲存的

pl/sql

程式。每當乙個特定的資料操作語句

(insert,update,delete)

在指定的表上發出時,

oracle

自動地執行觸發器中定義的語句序列。

2.觸發器的型別

語句級觸發器

:在指定的操作語句操作之前或之後執行一次,不管這條語句影響

了多少行

。行級觸發器(

for each row

):觸發語句作用的每一條記錄都被觸發。在行級觸

髮器中使用

old和

new偽記錄變數

,識別值的狀態。

語法:create  [or replace] trigger觸發器名

on表名

[for each row [when(條件) ] ]

declare

……

begin

plsql

end觸發器名;

1

範例:插入員工後列印一句話「乙個新員工插入成功」23

create or replace trigger testtrigger45

after insert on person67

declare

89 --local variables here

1011

begin

1213 dbms_output.put_line('乙個員工被插入');

1415 end testtrigger;

1

範例:不能在休息時間插入員工23

create or replace trigger validinsertperson45

before insert on person67

declare

89 weekend varchar2(10);

1011

begin

1213 select to_char(sysdate, 'day') into weekend from dual;

1415

if weekend in ('星期一') then

16丟擲乙個可以接受的異常

1819 end if;20

21 end validinsertperson;

當執行插入時會報錯

在觸發器中觸發語句與偽記錄變數的值

觸發語句

:old

:new

insert

所有欄位都是空

(null)

將要插入的資料

update

更新以前該行的值

更新後的值

delete

刪除以前該行的值

所有欄位都是空

(null)

1

範例:判斷員工漲工資之後的工資的值一定要大於漲工資之前的工資23

create or replace trigger addsal4p45

before update of sal on myemp67

foreach row89

begin

1011

if :old.sal >= :new

.sal then

1214

15 end if;16

17 end;

呼叫update

myemp t

sett.sal = t.sal -1;

oracle之觸發器

1 oracle中觸發器是當進行操作時觸發事情,進行處理。例如進行對資料表進行插入 更新和刪除時進行觸發事情處理。定義觸發器的是 create or replace trigger before after insert update delete on 資料庫表名 for each row 這是表...

Oracle之觸發器

資料庫觸發器是乙個與表相關聯的 儲存的pl sql程式。每當乙個特定的資料操作語句 insert,update,delete 在指定表上發出時,oracle自定地執行觸發器中定義的語句序列。簡單的來說就當某個條件成立的時候,觸發器裡面所定義的語句就會被自動的執行,因此觸發器不需要人為的去呼叫,也不能...

Oracle觸發器之before delete

剛接觸oracle,新建了乙個before delete的觸發器,但老是報 警告 建立的觸發器帶有編譯錯誤 最後發現是觸發器裡面的語句沒有寫分號的原因。下面帖出來,也供新手參考 1.建立表 create table test1 cardid number,name nvarchar2 20 numb...