Mysql 简单的事务操作

在默认情况下,MySQL是自动提交(autocommit)的,即如果SQL执行成功了,就直接自动生效了。如果需要手动提交和回滚事务,就需要通过明确的事务控制命令来开始事务,这是和Oracle等其他数据库的事务管理明显不同的地方。

事务开启和结束语法:

#开启新事务

START TRANSACTION;

#回滚事务

ROLLBACK;

#提交事务

COMMIT;

如果希望所有的事务都不是自动提交的,那么通过修改AUTOCOMMIT来控制事务比较方便,这样就不用在每个事务开始的时候执行“START TRANSACTION”语句

#设置手动提交模式

SET AUTOCOMMIT = 0;

如果设置了“SET AUTOCOMMIT=0”,那么所有INSERT、UPDATE、DELETE等支持事务的SQL语句都需要通过明确的命令进行提交或回滚,否则这些SQL语句就不会生效。

“SET AUTOCOMMIT”语句只对当前连接会话有效。

如果需要回滚部分事务,使用SAVEPOINT。

在事务中可以通过定义SAVEPOINT(保存点),指定回滚事务的一个部分,但是不能指定提交事务的一个部分。

对于复杂的SQL操作,可以定义多个不同的SAVEPOINT,当满足不同的情况时,可回滚不同的SAVEPOINT。需要注意的是,如果定义了相同名字的SAVEPOINT,则后面的SAVEPOINT会覆盖之前的定义。对于不再需要的SAVEPOINT,可以通过“RELEASE SAVEPOINT”命令删除SAVEPOINT,删除后的SAVEPOINT就不能再使用了。

注意:DDL语句不支持事务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值