深入浅出Oracle触发器类型(oracle触发器类型)
Oracle触发器是数据库程序,可以在特定条件下自动执行。它可以基于特定的表,列或数据库中的应用程序或系统事件来执行操作。触发器通常用于对数据库中的变更进行一些操作。
Oracle触发器类型可分为SELECT触发器、INSERT触发器、UPDATE触发器、DELETE触发器和系统触发器。
1、SELECT触发器
SELECT触发器在查询执行的数据返回时可以触发。例如,当我们运行SELECT语句时,SELECT触发器就可以根据查询条件来触发执行,从而对查询结果进行进一步处理。
例如:
CREATE OR REPLACE TRIGGER trg_salary_update
BEFORE INSERT ON employee FOR EACH ROW
BEGIN IF (:new.salary
:new.salary := 10000; END IF;
END;
上面的触发器将在插入新记录时触发,检查新的记录的salary字段的值,如果小于10000,则将salary字段的值修改为10000。
2、 INSERT触发器
INSERT触发器是在插入记录时可以被触发的触发器,它可以在一条delete语句运行的时候被触发。当我们执行INSERT语句时,INSERT触发器将被触发,从而完成相关的操作。
例如:
CREATE OR REPLACE TRIGGER trg_newemp
BEFORE INSERT ON employee FOR EACH ROW
BEGIN INSERT INTO log_table (emp_name,log_info)
VALUES (:new.name,'Insert New Employee');END;
上面的触发器将在每次插入新记录时触发,并在log_table中插入一条记录,记录插入新记录的信息。
3、UPDATE触发器
UPDATE触发器是在更新记录时可以被触发的触发器,它可以在一条UPDATE语句执行前被触发。当我们执行UPDATE语句时,UPDATE触发器将定义的操作来完成。
例如:
CREATE OR REPLACE TRIGGER trg_salary_update
BEFORE UPDATE OF salary ON employee FOR EACH ROW
BEGIN IF (:new.salary
:new.salary := 10000; END IF;
END;
上面的触发器将在更新salary的时候被触发,检查新的记录的salary字段的值,如果小于10000,则将salary字段的值修改为10000。
4、DELETE触发器
DELETE触发器是在删除记录时可以被触发的触发器,它可以在一条DELETE语句执行前被触发。当我们执行DELETE语句时,DELETE触发器将定义的操作来完成
例如:
CREATE OR REPLACE TRIGGER trg_delemp
BEFORE DELETE ON employee FOR EACH ROW
BEGIN INSERT INTO log_table (emp_name,log_info)
VALUES (:old.name,'Delete an Employee');END;
上面的触发器将在每次删除记录前触发,并在log_table中插入一条记录,记录删除记录的信息。
5、系统触发器
系统触发器是由数据库内部触发的触发器,他们使用特殊的事件触发,如新对象创建,特殊事件,新数据库操作等。例如,AFTER STARTUP触发器可以在数据库启动时触发,BEFORE LOGOFF触发器可以在用户注销时触发。
例如:
CREATE OR REPLACE TRIGGER trg_log_gen
AFTER STARTUP ON databaseBEGIN
INSERT INTO log_table (log_info) VALUES ('Database Started');
END;
上面的触发器将在数据库启动时触发,并在log_table中插入一条记录,记录数据库启动的信息。
以上就是Oracle中几种不同类型的触发器的深入浅出,使用触发器可以加快数据库访问,提高访问效率,实