11、oracle数据库下的事务和触发器
ORACLE下的事务和触发器
1.事务
事务是数据库的一种机制,当执行一系列操作时,事务可以保证这一系列操作都能完成,在此期间如果出现问题,则这一系列操作导致的结果均回退到原始状态。这样就保证了数据的一致性,事务在数据库种是极其重要的。
1.1 事务的特点
事务的特点简单说就是ACID。原子性,组成事务处理的语句是一个整体,不能只执行其中的一部分;一致性,在事务执行前后,数据库是一致的;隔离性,一个事务处理对另一个事务处理的影响;持续性:事务处理的效果会被永久保存下来。一个事务只会有一个结果,要么都执行,要么都不执行。
1.2 事务的提交和回滚
Oracle种使用commit和roolback来控制事务的提交和回滚。这里有一个保存点的概念,意思是可以通过创建保存点的方式指定事务回退的“点”。如下实例:
-- 创建保存点1 savepoint a1; -- 执行sql操作 -- 创建保存点2 -- 执行sql操作 -- 如果出问题了,回滚到保存点2 Roolback to a2; -- 提交(提交之后是无法回滚的) |
1.3事务提交前后的数据可见性
事务提交前,改变前的数据状态是可以恢复的,执行DML操作的用户可以通过SELECT 语句查询之前的修正,其他用户看不到当前用户所做的改变,直到当前用户结束事务,也就是提交事务。
事务提交后,数据的改变已经被保存到数据库中,改变前的数据已经丢失,所有用户可以看到结果,所有保存点被释放。一经提交,无法恢复。
2.触发器
触发器是一个与表相关联的、存储的PL/SQL程序,每当一个DML语句在表上发生时,oracle会自动执行触发器中的语句序列,触发器是在执行DML语句时,自动调用的。触发器可用于数据确认、实施复杂的安全性检查、跟踪表上的所有数据操作、数据的备份和同步等。
2.1 触发器的类型
触发器有两种类型:语句级触发器、行级触发器(FOR EACH ROW)
2.2 触发器的解释
触发器这个组件,我觉得可以称作为组件,光凭概念去理解可能会很抽象,通俗易懂的说触发器就相当于是一个监听器,当对表执行DML语句时,如果指定的对象上添加了触发器,则会执行触发器所定义的动作,我目前所认识的触发器指定定义到指定表上,接下来看几个例子理解一下。
2.3 触发器的应用
创建一个行级触发器,当更新数据表种记录时,将会执行打印“update table”的动作:
Create or replace trigger trigger1 Before update On person for each row Decclare Begin Dbms_output.put_line(“update table”); End; |
触发器中有:OLD和:NEW两个声明,意思是获取到制定操作之前对应行数据的旧值和新值,可以针对insert、update、delete操作进行修饰,不过需要注意的是,绑定到insert操作上的触发器中不能使用:OLD,绑定到delete操作上的触发器不能使用:NEW。可以思考一下为什么不能用。(insert之前有旧值么?)
好了,理论说了一大堆,下边写几个历史上用来做触发器入门的例子吧。
-- 在person表上添加行级触发器,用来监听插入之前的操作,禁止开头为A的名字添加到person表 Create or replace trigger t1 Before insert on person for each row Begin Dbms_output.put_line(‘hello’||:NEW.id||:NEW.name); If :NEW.name like ‘A%’ then Raise_APPLICATION_ERROR(-20000,’不允许写入以A开头的 名字’); End if; End; -- 验证操作 Set serveroutput on; Insert into person values(‘id’,’ABC’); -- 禁止插入,提示错误信息 |
-- 限制修改的年龄大于之前的年龄 Create or replace trigger t2 Before update on user for each row Begin If :NEW.age < :OLD.age then -- 提示错误信息 End if; End; |
-- 同时添加insert、update、delete三种类型操作对应的触发器 Crete or replace trigger t3 Before insert or update or delete on user Declare Begin -- 操作 End; |
查看创建了哪些触发器: SELECT * FROM USER_TRIGGERS |
11、oracle数据库下的事务和触发器相关推荐
- oracle表重命名 索引,CSS_在Oracle数据库中按用户名重建索引的方法,如果你管理的Oracle数据库下某 - phpStudy...
在Oracle数据库中按用户名重建索引的方法 如果你管理的Oracle数据库下某些应用项目有大量的修改删除操作, 数据索引是需要周期性的重建的. 它不仅可以提高查询性能, 还能增加索引表空间空闲空间大 ...
- Oracle数据库下的DDL、DML、DQL、TCL、DCL
首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...
- 13、oracle数据库下的游标
ORACLE下的游标操作 游标是sql的一个内存工作区,由系统或者用户以变量的形式定义.游标的作用是用于临时存储从数据库中提取的数据块.游标有静态游标.动态游标之分,静态游标又可分为隐式游标和显式游标 ...
- 12、oracle数据库下的存储过程和函数
ORACLE下的存储过程和函数 存储过程和函数是一种操作块,用来流程化.整体化处理业务逻辑的数据库操作方式.我理解的是相当于java开发语言中方法的概念,存储过程和函数的区别在于函数可以有返回值,而过 ...
- 9、oracle数据库下的视图和同义词
ORACLE下的视图和同义词 1.视图 视图就是一个查询的结果,可能包含一张表或者多张表的信息,创建视图其目的在于,便于查看表中的信息.视图只是在逻辑上存在. 1.1创建/修改视图 创建视图一定要有C ...
- 8、oracle数据库下的索引
ORACLE下的索引 索引是oracle下的一类对象,主要用于提高查询的效率. 1.操作索引 1.1 创建.修改索引 -- 添加一般索引 create index i_test_tname on te ...
- 6、oracle数据库下查询操作
ORACLE下查询操作 针对数据库操作最多的就是数据查询,这里分享一个我常用的方法,看到需求后,先确定查询范围,就是需要查询哪些表:之后确定查询条件:最后写出查询的字段. ORACLE中之前说过有两个 ...
- Oracle数据库学习之事务,去重,空值处理,基本操作符(五)
--事务,保证数据的安全有效,事务主要对DML语言有效,commit,rollback(只能回滚未提交的事务),savepoint(保存点) update emp set EMPNO = 1234 w ...
- oracle 数据库的数据事务的相关概念
1.事物的隔离级别:事物的隔离级别定义着事务的隔离程度. 首先搞清楚三个概念:脏读.不可重复读.幻读. 脏读:当一个事务读取另一个事务尚未提交的时候,产生脏读 不可重复读:在同一个事务中的同一个查询, ...
最新文章
- Grid SearchCV(网格搜索) 用法代码演示
- [Git] 写文章 史上最全文献检索、阅读及管理攻略
- 度量学习_使用Dropwizard度量标准监视和测量无功应用
- java Socket Tcp 浏览器和服务器(一)
- linux下oracle导出12705,llinux下Oracle数据库的单个表导出导入
- 长为N的数组,元素范围是0-N-1,其中只有一个数是重复的,找出这个重复元素...
- 更新k8s镜像版本的三种方式
- putty界面最友好的颜色配置参考
- 错误:java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
- 一个bootstrap.css的使用案例
- 在线图书销售系统顺序图_苏宁易购网上商城在线购物
- Greenplum外表gpfdist加载数据
- Android界面 Html5还是Native,说说他们的各自的优缺点。
- 【N32G457】基于RT-Thread和N32G457的可控电流源
- 常用贷款词汇英文名称
- ERR_ABORTED 404
- 什么软件质量/如何评价软件的质量
- 网店买书如何避免被骗?
- 建网站(为什么租服务器和购买域名)
- [感悟]做事有目标,效果会更好
热门文章
- sae 本地环境 mysql数据库_SAE本地环境与真实环境的差别
- 前台提交数据到php mysql,建立一个基础的MySQL数据库,使用PHP来抓取和处理数据,并抛出给前台...
- ajax option请求后无post请求_ThingJS:一种浏览器、服务器和技术的新组合方法——Ajax...
- [EDA]Quartus II 实验简答题
- poj2182 Lost Cows-暴力
- m个苹果放入n个盘子问题
- 计算机网络原理第一章习题3-24 3-25
- SQL(四) - 子查询和union以及limit分页
- 数据结构---关键路径
- 蓝桥杯 数字三角形 贪心+动态规划