關鍵字: oracle 資料庫 觸發器 trigger 語法
語法規則:
create [or replace] trigger [模式.]觸發器名
before| after insert|delete|(update of 列名)
on 表名
[for each row]
when 條件
pl/sql塊
說明:for each row的意義是:在一次操作表的語句中,每操作成功一行就會觸發一次;不寫的話,表示是表級觸發器,則無論操作多少行,都只觸發一次;
when條件的出現說明了,在dml操作的時候也許一定會觸發觸發器,但是觸發器不一定會做實際的工作,比如when 後的條件不為真的時候,觸發器只是簡單地跳過了pl/sql塊;
例子:sql **
create or replace trigger wf_tri_user_list before insert or update or delete on user_list
for each row
declare
uid varchar2(10); useq varchar2(10); asql varchar2(200); namea varchar2(200); nameb varchar2(200);
begin
namea:=null;
nameb:=null;
if inserting then
insert into wflow.bpm_org_user(userid,username,diaplayname,seq) values(:new.user_id,:new.user_name,:new.user_realname,:new.user_id);
dbms_output.put_line('insert trigger is chufale .....');
end if;
if updating then
if (:new.user_name<>:old.user_name) and (:new.user_realname<>:old.user_realname) then
namea:=:new.user_name;
nameb:=:new.user_realname;
asql:='update wflow.bpm_org_user set diaplayname=:1 where username=:2';
execute immediate asql using namea,nameb;
else
if :new.user_name<>:old.user_name then
namea:=:new.user_name;
asql:='update wflow.bpm_org_user set user_name=:1 where username=:2';
execute immediate asql using namea;
else
if :new.user_realname<>:old.user_realname then
nameb:=:new.user_realname;
asql:='update wflow.bpm_org_user set diaplayname=:1 where username=:2';
execute immediate asql using nameb,:old.user_id;
end if;
end if;
end if;
end if;
if deleting then
update wflow.bpm_org_jobusers set userid = 0 where :old.user_id =userid and parentid=-1;
delete from wflow.bpm_org_jobusers where userid = :old.user_id;
delete wflow.bpm_org_user where userid=:old.user_id;
end if;
commit;
end;
關鍵字:
:new 和:old使用方法和意義,new 只出現在insert和update時,old只出現在update和delete時。在insert時new表示新插入的行資料,update時new表示要替換的新資料、old表示要被更改的原來的資料行,delete時old表示要被刪除的資料。
注意:在觸發器中不能使用commit。
oracle資料庫觸發器
instead of觸發器介紹 instead of觸發器代替觸發動作,並在處理約束之前激發 對於每個觸發操作,每個表或檢視都只能有乙個instead of觸發器。而乙個表對於每個觸發操作可以有多個after觸發器 instead of觸發器的建立模板 create or replace trigg...
Oracle資料庫update觸發器
在專案中使用到oracle資料庫的update觸發器,先記錄下來方便以後查閱。預備知識和格式以後再編輯吧,先把內容貼出來。create or replace trigger demo trigger after update on tb goods referencing new as new ol...
Oracle資料庫觸發器例項
需求 在修改表qdyth.jzfpjcxx時,要實時記錄表中的資料變動情況 協商後結果 建立新錶記錄資料變動情況 實現手段 資料庫觸發器 建立或修改觸發器 tr jzfpjcxx 2 create or replace trigger tr jzfpjcxx 2 觸發條件 before delete...