数据库知识点---事务

事务:事务是需要在同一个处理单元中执行的一系列更新处理的集合。

事务处理的终止指令包括:commit 和 rollback
 
DBMS的事务具有 ACID 四种属性 
原子性 atomicity
一致性 consistency
隔离性 isolation
持久性 durability


在RDBMS系统中,事务代表了对表中数据进行更新的单位

例如:在某公司的会议上,大家决定将a衬衫销售价格降低100元出售,b衬衫的销售价格上涨50元。正常逻辑就是写sql句子咯:
update clothes 
set a_shirt_price = a_shirt_price - 100 
where colthes_name = 'a_shirt';

update clothes 
set b_shirt_price = b_shirt_price + 100 
where colthes_name = 'b_shirt';


但是上述两个操作必须在同一个单元进行处理,任何一项操作被忘记,都会对公司造成影响。所以,事务就是解决上述问题的。
在DBMS系统的创建事务的语法,如下:

事务开始语句;
DML语句①(DML句子包括:INSERT、UPDATE、DELETE、SELECT  DDL句子包括:CREATE、ALTER、DROP )
DML语句②
DML语句③
事务结束语句(commit rollback)

 

在标准的SQL中并没有定义事务的开始语句,而是由各个DBMS自己来定义的。比较有代表性的语法如下:

1、SQL Server、PostgreSQL 
BEGIN TRANSACTION

2、MySQL
START TRANSACTION 

3、Oracle、DB2



那么对应的,在demo中,该公司进行衬衫价格调整的sql句子在Oracle中就该是按照如下写法:

update clothes 
set a_shirt_price = a_shirt_price - 100 
where colthes_name = 'a_shirt';
update clothes 
set b_shirt_price = b_shirt_price + 100 
where colthes_name = 'b_shirt';
COMMIT;

 


补充事务隔离级别:


事务的隔离级别指的是一个事务对数据的修改 与另一个并行的事务的隔离程度,当多个事务同事访问相同数据时,如果没有采取必要的隔离机制,就可能发生以下的问题:

1、脏读:-个事务读取到另一个事务未提交的更新数据。

2、幻读:指当事务不是独立执行时发生的一种现象,例如: 第一个事务对一个表中的数据进行了 修改,这种修改涉及到表中的全部行数据,同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据 ,就像发生了幻觉样。

3、不可重复读:在一个事务内,多次读取到同一数据。 在这个事务还没有结束时,另一个事务也访问了该同一数据。那么,在第一个事务中的两次读数据之间 ,由于第二个事务的修改,那么第一次事务两次读到的数据可能是不一样的。这样在一个事务内两次读到的数据是不一 样的,因此称为不可重复读。























 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值