觸發器
資料庫觸發器是乙個與表相關聯的、儲存的
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呼叫update範例:判斷員工漲工資之後的工資的值一定要大於漲工資之前的工資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;
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...