一 Oracle觸發器語法
觸發器是特定事件出現的時候
功能
觸發器觸發時間有兩種
CREATE [OR REPLACE] TIGGER觸發器名 觸發時間 觸發事件
ON表名
[FOR EACH ROW]
BEGIN
pl/sql語句
END
其中
觸發器名
由於觸發器是數據庫自動執行的
觸發時間
before—表示在數據庫動作之前觸發器執行;
after—表示在數據庫動作之後出發器執行
觸發事件
insert
Oracle觸發器語法(二)Oracle觸發器詳解
update
delete
表 名
for each row
下面的觸發器在更新表auths之前觸發
create triggerauth_secure before insert or update or delete //對整表更新前觸發
on auths
begin
if(to_char(sysdate
RAISE_APPLICATION_ERROR(
end if;
end
例子
CREATE OR REPLACE TRIGGER CRM
ON CRM
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
declare
begin
if :NEW
begin
客戶投訴
update T_COMPLAINT_MANAGE set SERVE_NAME=:NEW
客戶關懷
update T_CUSTOMER_CARE set EXECUTOR_NAME=:NEW
客戶服務
update T_CUSTOMER_SERVICE set EXECUTOR_NAME=:NEW
where EXECUTOR_SEED=:OLD
end;
end if;
end T_sub_userinfo_aur_name;
/
二
開始
create triggerbiufer_employees_department_id
beforeinsertorupdateofdepartment_idonemployees
referencingoldasold_value newasnew_value
for each row
when (new_value
begin
:mission_pct :=
end;
/
create trigger biufer_employees_department_id
命名習慣
biufer(before insert update for each row)
employees表名
department_id列名
比如
表或視圖上的DML語句
DDL語句
Oracle觸發器語法(四)
數據庫關閉或啟動
before insert or update
of department_id
on employees
referencing old as old_value
new as new_value
for each row
說明
when (new_value
限制不是必須的
其中的new_value是代表更新之後的值
是觸發器的主體
begin
:mission_pct :=
end;
主體很簡單
觸發
insert into employees(employee_id
department_id
values(
select commission_pct from employees where employee_id=
觸發器不會通知用戶
數據庫關閉或啟動
before insert or update
of department_id
on employees
referencing old as old_value
new as new_value
for each row
說明
when (new_value
限制不是必須的
其中的new_value是代表更新之後的值
是觸發器的主體
begin
:mission_pct :=
end;
主體很簡單
觸發
insert into employees(employee_id
department_id
values(
select commission_pct from employees where employee_id=
觸發器不會通知用戶
From:http://tw.wingwit.com/Article/program/Oracle/201311/17146.html