触发器:由“触发事件”来执行,(区别于存储过程的调用或执行是由用户或应用程序来进行的)。能够引起触发器运行的操作就被称作“触发事件”,如执行DML语句(insert 、update 、delete对表或视图执行数据处理操作),执行DDL语句(create、alter、drop 语句在数据库中创建、修改、删除模式对象),引发数据库系统事件(如系统启动或退出、产生的异常错误等)引发用户事件(如登录或退出数据库操作)都可以引起触发事件的运行。
格式:
CREATE OR REPLACE TRIGGER 触发器名称
【before/after/instead of】 触发器事件 --如 insert update delete create drop alter 等
ON 【table_name/view_name/user_name/db_name】--如操作的数据表、视图、用户模式、数据库等对他们的某些操作引起触发器的运行。
【FOR EACH ROW】WHEN tri_condition】 --指定为行级触发器,即每一行数据操作都会引起触发器运行,如果未指定则为语句级触发器,触发器只执行一次。--WHEN 为关键字,tri_condition表示触发条件表达式,只有当表达式为TRUE时才会自动执行触发器。
BEGIN
pl/sql语句,触发主题
END 触发器名称。
触发器分为
行级触发器:当DML语句对每一行数据进行操作都会引起触发事件的运行。
语句级触发器:无论DML语句影响多少行数据,都只会执行一次触发器。
替换触发器:定义在视图上,而不是定义在表上,用来替换事件的语句。
用户事件触发器:指与DDL操作或用户登录、退出数据库等事件相关的触发器。如用户登录到数据库或使用alter语句修改表结构等事件的触发器。
系统事件触发器:指在oracle数据库系统的事件中进行触发的触发器,如oracle实例的启动与关闭。
行级触发器:
create sequence seq_id;创建系列seq_id。
seq_id.nextval 属性获取一系列有序的数值。
:new.column_name “新值标识符”
:old.column_name “原值标识符”