【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;
总结
以上就是今天要讲的内容,希望对大家有所帮助!!!