DECLARE
BEGIN
END;
实例: 假设要在company表中查看每条数据应该满足的条件,它以每次操作一步是以都应该记录到日志表中,可以使用DML触发器来实现该效果,它对对象的操作时都看到更加详细的每行数据,而不仅仅是每一行,可以根据实际情况判断是否应该记录到日志表中,其语法如下:
CREATE OR REPLACE TRIGGER log_company_data
AFTER INSERT OR UPDATE OR DELETE
ON company
FOR EACH ROW
BEGIN
IF UPDATING THEN
INSERT INTO log_company (data,action)
values (:NEW.id,’update’);
ELSIF DELETING THEN
INSERT INTO log_company (data,action)
values (:OLD.id,’delete’);
ELSIF INSERTING THEN
INSERT INTO log_company (data,action)
values (:NEW.id,’insert’);
END IF;
END;
三、系统触发器
我们可以创建一个系统触发器来响应系统底层的事件,系统触发器的语法格式如下:
CREATE OR REPLACE TRIGGER
[BEFORE|AFTER] [ LOGON | LOGOFF |SERVERERROR | SHUTDOWN ]
ON
BEGIN
END;
实例: 在数据库登录时制定输出一条日志消息,它的语法如下:
CREATE OR REPLACE TRIGGER logon_info
AFTER LOGON
ON sys.schema
BEGIN
INSERT INTO logon_log (data) VALUES (sysdate);
END;
以上就是Oracle触发器不同类型的功能分析,Oracle触发器提供了一种灵活的机制,能够使我们可以在某个动作发生时自动执行特定操作,从而保证数据库的完整性,同时也实现了系统自动化,提高数据库管理效率,而且可以满足多种类型的应用场景,因此在数据库开发中使用Oracle触发器,可以大大提高系统的效率和易维护性。