掌握Oracle触发器类型让我们更轻松(oracle触发器类型)
地进行数据库开发
Oracle触发器是Oracle数据库中最重要的开发功能之一,它能够在完成其他数据库操作 之后自动执行指定任务,从而实现数据库开发的自动化,并且能彻底改变数据库开发者的工作方式。
Oracle触发器分为四种类型:表触发器、行触发器、调用触发器和调度器触发器。
表触发器是在执行表上的插入、更新或删除操作时触发的,它们可以防止用户新增和更改数据库中的表中的数据。例如:下面的表触发器可以实现当向表中插入新行时自动给列name赋值:
CREATE TRIGGER trig_name
BEFORE INSERT ON tableName
FOR EACH ROW
BEGIN
:NEW.name := ‘test’;
END;
行触发器是在对表进行更新或插入操作后,根据已经插入或更新的行中数据的值进行拥有不同行为的多种行触发器的总称。例如:当更新name列为“Test”时,触发器可以在相应行中添加 created 列的值:
CREATE TRIGGER trig_name
BEFORE UPDATE ON tableName
FOR EACH ROW
BEGIN
IF (:NEW.name = ‘test’) THEN
:NEW.created := SYSDATE;
END IF;
END;
调用触发器可以直接调用数据库对象执行程序单元,例如触发器可以执行存储过程,包等。
CREATE TRIGGER trig_name
BEFORE DELETE ON tableName
FOR EACH ROW
BEGIN
CALL SomeProcedure();
END;
最后,是调度器触发器,它可以在指定时间、日期或者某个指定频率上被触发,可以用来定期执行某些具体任务。例如:
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => ‘job1’,
job_type => ‘PLSQL_BLOCK’,
job_action => ‘BEGIN timestamp := SYSDATE;END;’,
start_date => SYSDATE,
repeat_interval => ‘FREQ=DAILY;BYHOUR=16;BYMINUTE=0;BYSECOND=0;
enabled => TRUE,
auto_drop => FALSE
);
END;
掌握Oracle触发器的类型,可以使我们更轻松地进行数据库开发,尤其是大型项目中涉及到大量的重复性工作,用触发器可以大大减少开发者的工作量,使开发更加有效率。