觸發器: 當用戶登錄/退出或者操作某個數據對象或者進行DDL(建表,建view)引起某個儲存過程的值的變化,把這個隱含被調用的過程,稱為觸發器。 語法 創建觸發器 獲取新舊表記錄對象 禁用/啟用觸發器 刪除觸發器 ...
觸發器:
當用戶登錄/退出或者操作某個數據對象或者進行DDL(建表,建view)引起某個儲存過程的值的變化,把這個隱含被調用的過程,稱為觸發器。
語法
CREATE OR REPLACE TRIGGER trigger_name {before|AFTER} {insert,delete,update of column,column} on table_name for each row --表示這是一個行級觸發器 when begin trigger_body; end;
創建觸發器
create or replace trigger change_teacher before insert or update or delete on teachers begin if to_char(sysdba,'HH24') not berween '8' and '17' ) THEN RAISE_APPLICATION_ERROR(-20005,'在非工作時間不能改變教師信息。'); END IF; END change_teacher;
獲取新舊表記錄對象
create or replace trigger tri_salary before update on scott.emp for each row begin if :new.sal<:old.sal then dbms_output.put_line('工資不能低於原來工資'); raise_application_error(-20005,'請不要修改'); else dbms_output.put_line('原來是工資是'||:old.sal); end;
禁用/啟用觸發器
alter trigger 觸發器名 disable(enable);
刪除觸發器
DROP TRIGGER salary_check;