create
orreplace
trigger
wf_tri_user_list before insert
orupdate
ordelete
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
create or replace trigger wf_tri_user_list before insert or update or delete on user_list
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;
貌似csdn不支援sql高亮!-_-
資料庫觸發器的使用範例
觸發器 其是一種特殊的儲存過程。一般的儲存過程是通過儲存過程名直接呼叫,而觸發器主要是 通過事件 增 刪 改 進行觸發而被執行的。其在表中資料發生變化時自動強制執行。常見的觸發器有兩種 after for instead of,用於insert update delete事件。after for 表...
觸發器及觸發器的作用
觸發器是一種用來保障參照完整性的特殊的儲存過程,它維護不同表中資料間關係的有關規則。當對指定的表進行某種特定操作 如 insert,delete或update 時,觸發器產生作用。觸發器可以呼叫儲存過程。建立觸發器的語法 create trigger owner.觸發器名 on owner.表名 f...
觸發器 mysql觸發器
觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...