mysql事物开始命令_MySQL命令行事务

mysql中,事务是一些数据库操作语句,有3个特点:

1.只有使用了InnoD引擎的数据库或者表支持事务

2.事务可以用来维护数据库完整性,保证成批的sql语句要么全执行,要么全不执行,不会出现部分执行失败导致不一致的情况

3.事务用来管理insert,update,delete语句

事务要满足4个条件,即分布式系统设计中的ACID原理:

1.atomiclly,原子性,一个事务中的所有操作,要么全完成,要么全不完成,不会结束在中间环节,事务执行中发生错误会回滚到之前的状态

2.consistency:一致性,事务开始之前和开始之后,数据库的完整性没有被破坏,写入的资料必须完全符合所有的预设规则,包含资料的精确度、串联型、后续数据库可以自发完成预设工作

3.isolation:隔离性:允许多个并发事务同时对数据读写和修改,防止多个事务交叉执行导致数据的不一致,事务隔离分成不同级别:读未提交、读提交、可重复读、串行化

4.durability:持久性:事务结束之后,对数据的修改是永久的,即使系统故障也不会丢失

命令行和事务:在命令行中,事务默认是自动提交的,要显式开启事务需要使用命令begin

事务开启语句:

1.begin或者start transaction:显式开启一个事务

2.commit:提交一个事务,使修改是永久的

3.rollback:回滚事务,撤销未提交的修改

4.savepoint identifier:创建一个保存点,一个事务中可以有多个保存点

5.release savepoint identifier:删除一个事务的保存点,若没有这个保存点,抛出异常

6.rollback to identifier:事务回滚到保存点

7.set transaction:设置事务的隔离级别,InnoDB提供的级别有read uncommitted,read committed,repeatable read,serializable

操作的例子:

使用begin和commit操作事务:

mysql> create table tmp( id int(5)) engine=innodb;

Query OK, 0 rows affected (0.01 sec)

mysql> begin;

Query OK, 0 rows affected (0.00 sec)

mysql> insert into tmp value(5);

Query OK, 1 row affected (0.00 sec)

mysql> commit;

Query OK, 0 rows affected (0.00 sec)

mysql> select * from tmp;

+------+

| id |

+------+

| 5 |

+------+

1 row in set (0.00 sec)

使用rollback回滚未提交的修改

mysql> begin;

Query OK, 0 rows affected (0.00 sec)

mysql> insert into tmp value(6);

Query OK, 1 row affected (0.00 sec)

mysql> rollback;

Query OK, 0 rows affected (0.01 sec)

mysql> select * from tmp;

+------+

| id |

+------+

| 5 |

+------+

1 row in set (0.00 sec)

注意,若begin之后没有commit,而是使用其他语句,比如select,那么会自动commit,修改直接生效

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值