ORACLE中的触发器

 触发器是当特定的SQL DML语句,如INSERT、UPDATE或DELETE语句在特定的数据库表上运行时,有数据库自动运行(自动激活)的过程,创建触发器的语法如下:

CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER | INSTEAD OF} trigger_event
ON table_name
FOR EACH ROW[WHEN trigger_condition]
BEGIN
  trigger_body
END trigger_name;

OR REPLACE说明如果该触发器已经存在,则用新的触发器代替它,该选项可以用来修改一个现有触发器

trigger_name指定触发器名

BEFORE指定触发器在触发事件运行之前激活。AFTER指定触发器在触发事件运行之后激活。INSTEAD OF指定用触发器代替触发事件的运行

trigger_event指定激活触发器的事件

table_name指定触发器引用的表

FOR EACH ROW指定触发器是一个行级触发器,即当触发器激活时,trigger_body包含的代码会为每一行运行一次。如果忽略了FOR EACH ROW,则触发器是一个语句级触发器,即不管所作用的行有多少,当触发器激活时,trigger_body中包含的代码只运行一次

trigger_condition指定限制触发器实际运行的布尔条件

trigger_body中包含实现触发器功能的SQL和PL/SQL代码


下面的触发器将在emp2表的sal列发生变化时触发, 

SET SERVEROUTPUT ON;
CREATE OR REPLACE TRIGGER tri_update_emp2_sal
BEFORE UPDATE OF sal
  ON emp2
  FOR EACH ROW WHEN (new.sal != old.sal)
    BEGIN
      dbms_output.put_line('工资被更改');
  END tri_update_emp2_sal;
/

 

执行以下语句时将激活tri_update_emp2_sal触发器:

UPDATE emp2 SET sal = 1200 WHERE empno = '7369';

 

获取触发器的相关信息:

SELECT * FROM user_triggers WHERE trigger_name = 'TRI_UPDATE_EMP2_SAL';

 

禁用和启用触发器:

--禁用
ALTER TRIGGER tri_update_emp2_sal DISABLE;
--启用
ALTER TRIGGER tri_update_emp2_sal ENABLE;

 

删除触发器:

DROP TRIGGER tri_update_emp2_sal;

  

你可能感兴趣的:(oracle)