MySQL之事务编程(二)事务控制语句

本文详细介绍了MySQL中事务的基本概念,包括自动提交、显示开启事务、事务控制语句(如STARTTRANSACTION、COMMIT、ROLLBACK、SAVEPOINT等),并通过多个案例展示了这些语句的使用方式和效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL里面默认的事务是自动提交的。即执行SQL语句后就会马上执行COMMIT操作。因此我们要显示的开启一个事务实用命令BEGIN和START TRANSACTION,或者去执行AUTOCOMMIT=0,MySQL数据库默认的AUTOCOMMIT的值为1,表示默认为自动提交。下面我们来看看相关的事务控制语句:

1、START TRANSACTION | BEGIN

显示的开启一个事务。

2、COMMIT和COMMIT WORK

在completion_type=0时,两者一样的效果。但是当completion_type=1时,两者效果存在区别,为1时,COMMIT WORK等同于COMMIT AND CHAIN,开启一个链事务。当completion_type=2时,COMMIT WORK等同于COMMIT AND RELEASE,当事务提交后就会自动断开于服务器的链接。

3、ROLLBACK和ROLLBACK WORK

回滚

4、SAVEPOINT identifier:

保存节点

5、RELEASE SAVEPOINT identifier

释放节点信息,通常与控制语句SAVEPOINT identifier一起用。如果没有相应的节点则会返回一个错误。

6、ROLLBACK TO [SAVEPONT] indentifier

回滚道相应的节点

7、SET TRANSACTION

用来设置事务的隔离级别

8、案例分析:

EG1::

(1)create table t( a intm primary key(a) );   (2)set @@completion_type=1;  (3)BEGIN;  (4)INSER INTO t value(1);  (5)COMMIT WORK;     (6)INSER INTO t value(2);   (7))INSER INTO t value(1);  (8)ROLLBACK   (9)SELECT * FROM t;

completion_type设置为1,表示COMMIT WORK会自动开启一个链事务,所以在7会提示重复主键,而回滚后第一个2也没有插入到表中去。

EG2:

(1) set @@completion_type=3; (2) BEGN; (3)INSER INTO t value(3);   (4)COMMIT WORK;    (5) select @@version \G;

执行第(5)时,我们会发现有错误,事实上是因为执行第(4)后,会断开链接。

EG3:

ROLLBACKTO SAVEPOINT命令并不是真正地结束了事务,如果此时查询结果,在此之前如果没有提交的事务也不会得到提交,查询相应的数据会发现数据库里面没有你想要的数据。

写于2013年10月24日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值