资讯详情

Oracle DTL 数据事务语言

指一组相关SQL操作,我们所有的操作都在事务中。

注:在数据库中,执行业务的基本单位是事务,而不是某一条SQL。

默认情况下,数据库会打开所有的事务,也就是说,一个事务的结束代表着下一个事务的开始。

执行commit或者rollback指令将结束当前事务

功能:确保数据的稳定性和可预测性

例如:银行转账业务

【SQL1:A账号转到B账号100000

update tbl_account set balance=balance-10000 where accountNo=A账号;

SQL2:

update tbl_account set balance=balance 10000 where accountNo=B账号;

SQL1和SQL2必须处于同一事务中,以确保同时成功或失败。

事务的四大特点(ACID):

atomic,原子是不可分割的,要么同时成功,要么同时失败;

consistency,一致性,一旦事务结束,内存中的数据与数据库中的数据保持一致;

isolation,隔离,事务不相互干扰,一件事的结束意味着下一件事的开始;

duration,持久性,事务一旦提交,则数据持久化到数据库中,永久保存

在oracle操作事务命令:

1.commit,提交事务

将事务中的所有数据持续到磁盘中

2.rollback to 回滚点,回滚事务

取消事务中的所有操作,回到初始状态

3.savepoint 回滚点,设置回滚点

事务回滚时,回滚到起点

总结:

1.目前主流数据库支持事务,其中Oracle支持的最好

2.一个事务不能读取另一个事务尚未提交的数据

3.DDL句子会自动提交事务

4.DML语句不会自动提交事务,需要手动提交commit

多事务并发处理机制:

原因:多个事务同时操作表中的同一行数据。如果同时修改这些操作,就会出现并发问题。如果不处理,数据就会不一致

数据库并发问题包括:

1.脏读

这意味着一个事务正在访问数据并修改数据,而该修改尚未提交到数据库,另一个事务也访问并使用数据。

解决方案:在修改数据时,不能访问其他事务

2.不能重复:

这意味着一个事务多次读取相同的记录。如果此时另一个事务也访问并修改数据,数据将不一致,原始数据将成为不可重复读取的数据。

解决方案:修改事务完全提交后才能读取数据

3.幻读

指一个事务修改表中的多行记录,但此时另一个事务插入数据,第一个事务会发现表中没有修改,就像幻觉一样;

解决方案:在事务提交数据之前,其他事务不能添加数据

【Oracle并发处理采用‘

1.表级排他锁(X)exclusive mode

2.表级共享锁(S)share mode

3.表中行排他锁share row exclusive

注:这三种锁是通过特殊命令申请的

语法:

lock table tbl_name in mode;

例如:

--共享锁表

lock table tbl_emp in share mode;

--排他锁表

lock table tbl_emp in exlusive mdoe;

4.行级共享锁(RS)row share

5.行级排他锁(RX)row exclusive

注:这两种锁不需要通过特殊命令申请,而是通过DQL和DML自动申请

注意:

1.所有的DQL默认情况下,语句会自动申请RS锁

2.所有的DML默认情况下,语句会自动申请RX锁,每行记录都是唯一的RX锁

3.在项目中,为了满足业务要求,一般select句子需要申请RX锁

select语句通过for update来申请RX锁:

select * from s_emp for update;

select * from s_emp for update wait 5;等待5秒

select * from s_emp for update nowait;

Oracle DTL 数据事务语言

标签:行记录情况下开启microsoft支持行业数据不一致定义sel

本技术文章来自互联网。如果您无意侵犯您的权益,请点击此处反馈版权投诉 本文系统来源:http://www.cnblogs.com/ty-v/p/7880497.html

标签: 铜铝电缆连接端子dtl

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司