数据库事务介绍及特性

数据库事务介绍及特性

一、数据库事务介绍

简单地说,事务就是逻辑上的一组SQL语句操作,组成这组操作的各个SQL语句,执行时要么全部成功,要么全部失败。

 

例如:oldboy给oldgirl转账5元钱,流程如下:

1. oldboy银行卡取出5元,计算式money-5。

2. 5元钱打入oldgirl的账户上,oldgirl账户收到5元,计算式money+5。

 

上述转账的过程,对应的sql语句为:

mysql> update oldboy_account set money=money-5 where name='oldboy';

mysql> update oldboy_account set money=money+5 where name='oldgirl';

 

上述的两条SQl操作,在事务中的操作就是要么执行,要么都不执行。

这就是事务的原子性(Atomicity)。

MySQL5.5支持事务的引擎:InnoDB/ndb(mysql集群默认引擎)。

 

二、事务的四大特性

1、原子性(Atomicity)

事务是一个不可分割的单位,事务中的所有SQL操作要么都发生,要么都不发生。

 

2、一致性(Consistency)

事务发生前和发生后,数据的完整性必须保持一致。

 

3、隔离性(Isolation)

当并发访问数据库时,一个正在执行的事务在执行完毕前,对于其它的会话是不可见的,多个并发的事务之间的数据是不可见的。

 

4、持久性(Durability)

一个事务一旦被提交,它对数据库中的数据改变是永久性的。如果出了错误,事务也不允许撤销,只能通过”补偿性事务”。

 

小结:数据库的四大特性对于所有关系型数据库都是适用的。

 

三、事务的开启

数据库默认事务是自动提交的,也就是发一条sql它就执行一条。如果想多条sql放在一个事务中执行,则需要使用事务进行处理。当我们开启一个事务,并且没有提交,mysql会自动回滚事务。或者我们使用rollback命令手动执行回滚事务。

 

MysQL5.6版本

1、查看当前数据库自动提交的状态,默认为ON

mysql> show variables like "%autocommit%" ;

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| autocommit    | ON    |

+---------------+-------+

1 row in set (0.00 sec)

小结:mysql默认是自动提交的,oracle需要手动提交。

 

2、设置自动提交的状态为OFF

mysql> set global autocommit=off;

Query OK, 0 rows affected (0.00 sec)

 

mysql> show variables like "%autocommit%" ;

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| autocommit    | OFF   |

+---------------+-------+

1 row in set (0.00 sec)

小结:

1、创建一个表,如果自动提交的状态为OFF,就需要commit手动提交。

 

3、回滚事务

mysql> rollback;

Query OK, 0 rows affected (0.00 sec)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东城绝神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值