【MySQL】第十四部分 DCL中COMMIT和ROLLBACK

文章介绍了在MySQL中,COMMIT用于永久保存数据,而ROLLBACK用于回滚数据到最近的COMMIT状态。DDL操作如TRUNCATE不可回滚,而DML如DELETE在设置autocommit为FALSE后可以。文中通过示例演示了DELETE和TRUNCATE配合COMMIT与ROLLBACK的使用情况。
摘要由CSDN通过智能技术生成

【MySQL】第十四部分 DCL中COMMIT和ROLLBACK



14. DCL中COMMIT和ROLLBACK

前提知识点

DDL的操作一旦执行就不可以进行回滚,对于指令SET autocommit = FALSE是无效的,因为在执行DDL操作后一定会执行一次COMMIT,所以上述指令失效。


DML的操作(默认情况下,一旦执行也是不能进行回滚的,但是如果在执行DML操作之前执行SET autocommit = FALSE,则执行CML操作是可以实现回滚

针对于上述第十三部分所讲到的清空表的操作,TRUNCATE语句(DDL)是不能回滚的,而DELETE语句是可以回滚的

TRUNCATE TABLE 表名;
DELETE FROM 表名;

例如:
TRUNCATE TABLE emp;
DELETE FROM emp;

COMMIT: 提交数据 , 一旦执行了COMMIT,则数据就被永久保存在数据库中,意味着数据不可以进行回滚

ROLLBACK: 回滚数据, 一旦执行了ROLLBACK,则可以实现数据的回滚,回滚到最近的一次COMMIT之后

# 演示DELETE FROM
# 1. 先进行提交
COMMIT;
# 2. 在执行DML操作之前执行SET autocommit = FALSE;
SET autocommit = FALSE;
# 3. 清空数据
DELETE FROM c_employees;
# 4. 查看表
SELECT * FROM c_employees;
# 5. 进行回滚,它会回滚到最近的COMMIT
ROLLBACK;
# 6. 查看数据是否恢复
SELECT * FROM c_employees;

# 演示TRUNCATE TABLE
# 1. 先进行提交
COMMIT;
# 2. 在执行DDL操作之前执行SET autocommit = FALSE;
SET autocommit = FALSE;
# 3. 清空数据
TRUNCATE TABLE c_employees;
# 4. 查看表
SELECT * FROM c_employees;
# 5. 进行回滚
ROLLBACK;
# 6. 查看数据是否恢复
SELECT * FROM c_employees;


总结

以上就是今天要讲的内容,希望对大家有所帮助!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值