深入了解Oracle数据库触发器类型(oracle触发器类型)
Oracle数据库的触发器可帮助用户根据某种触发条件实现自动响应,帮助用户更及时、更便捷地处理相关信息,Oracle数据库中的触发器有三种类型:
一、表触发器(Table Trigger)
表触发器可以声明在表或试图上,当用户对此表或视图进行数据操作变更时触发,也可以称为“DML触发器”,具有三种类型:
(1)无参表触发器:无法访问变更后的数据,只能根据表的初始状态做出反应。例如:
CREATE TRIGGER salary_table_trigger
BEFORE INSERT ON salary_table
FOR EACH ROW
BEGIN
SET NEW.amount_due = NEW.salary * 0.1;
END;
(2)行级表触发器:能够访问和操作每一行记录,可以修改新插入行,也可以将具体某些行执行特定动作。例如:
CREATE TRIGGER salary_table_trigger
AFTER INSERT ON salary_table
FOR EACH ROW
BEGIN
IF (NEW.region = North ) THEN
INSERT INTO salary_tab2 VALUES (NEW.emp_name, NEW.region);
ELSE
INSERT INTO salary_tab3 VALUES (NEW.emp_id, NEW.salary);
END IF;
END;
(3)工作表表触发器:可以访问每一行以及被触发动作相关的所有行记录,一次可以处理多行查询结果,可用于改变多行。例如:
CREATE TRIGGER salary_table_trigger
AFTER UPDATE OF salary_column ON salary_table
REFERENCING OLD as OLD ROW
FOR EACH ROW
BEGIN
UPDATE salary_table2 SET NEW.salary = OLD.salary*1.10;
END;
二、计时器触发器(Timer Trigger)
计时器触发器可以基于特定的时间来计划/调度特定程序,通过定义用户数据库、管理员任务或是数据库连接来执行,计时器触发器运行可能主要依赖于以下因素:
1、某个特定的精确时间:我们可以指定某个特定时间,精确到秒或毫秒,以便在某一刻触发;
2、某个特定间隔时间:例如每隔5小时定时任务被触发;
3、某个特定的时段:例如从每天8点~18点之间,每隔10分钟触发;
4、特定的重复周期:比如每个周一、周二的下午4点触发,以及每月的第25天的12点触发;
示例:
CREATE OR REPLACE TRIGGER timer_trigger
AFTER
EVERS 24 HOURS
ON SCHEDULED TIME
BEGIN
EXECUTE IMMEDIATE update student set name= hello
END
三、DDL触发器(Data Definition Language Trigger)
DDL触发器是对数据库对象变动的监控和操作,DDL触发器可以用来纪录或实施数据库级的切换、修改或者删除的操作,例如:当创建表或修改表结构时。
CREATE OR REPLACE TRIGGER DDL_TRIGGER
AFTER DDL
BEGIN
EXECUTE IMMEDIATE INSERT INTO Student(Name)values( John )
END;
总结
Oracle数据库的触发器提供了三种类型,分别为表类触发器、计时器触发器和DDL触发器,用户可以根据自己的需要使用不同的触发器来实现自动化,从而提高工作效率和降低可能出现的错误。
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 深入了解Oracle数据库触发器类型(oracle触发器类型)
相关文章
- Oracle数据库:未能解锁的门户(oracle数据库未打开)
- 利用Oracle字段加备注有效解决数据性能问题(oracle字段加备注)
- 利用Oracle数据库查询时间的统计分析(oracle时间统计)
- 提升Oracle数据库的备份级别(oracle备份级别)
- 查询从Oracle数据库查询指定数量记录(oracle指定条数)
- 数据库成功运用易语言与Oracle数据库的实例研究(易语言oracle)
- Oracle数据库中的触发器类型分析(oracle触发器类型)
- Oracle索引分区:优化数据库查询性能(oracle索引分区)
- 深入探索Oracle中的索引查询(oracle如何查询索引)
- Oracle表空间:生成不同结果(oracle 表空间不同)
- Oracle数据库如何实现内存限制(oracle 内存限制)
- Oracle关联查询特有写法指南(oracle关联特有写法)
- Oracle免费视频学习,助你成为程序员专家(oracle免费视频下载)
- 拥抱更高水平获得Oracle OCP认证(ocp认证oracle)
- 使用CI框架连接Oracle数据库的实践经验(ci框架连接oracle)
- 瞥一眼ORACLE有效利用DOS命令(dos命令查oracle)
- 的使用Oracle数据库中语句变量的有效利用(oracle中语句变量)
- Oracle数据库实现响应数据文件保存(oracle保存响应文件)
- Oracle主键之谜探索表中隐藏的解答(oracle主键所在表)
- Oracle数据库中的工费率分析(oracle中的工费率)
- Oracle中求两字段值之差(oracle两个字段值差)
- Oracle Database 10g开启新时代(oracle_08103)