mysql设置为手动提交,但是执行update语句不需要执行commit还会直接修改数据库的数据。但是执行rollback语句还会恢复为修改之前的数据。这是为什么
时间: 2024-06-07 16:08:42 浏览: 7
MySQL采用了隐式提交机制,即在不显式调用COMMIT语句的情况下,MySQL会自动将事务提交。这种情况下,即使将autocommit设置为false,MySQL仍然会自动提交事务,因此update语句会直接修改数据库的数据。
但是,如果在执行UPDATE语句之前,手动开启了一个事务,那么在回滚事务时,所有的对数据库的修改都会被撤销,因此执行ROLLBACK语句可以恢复为修改之前的数据。
如果您想要避免MySQL的隐式提交机制,可以将autocommit设置为false,并且在所有需要提交的语句后手动调用COMMIT语句。这样可以确保只有在您显式调用COMMIT语句时,MySQL才会提交事务。
相关问题
mysql如何实现批量执行update语句,中间update报错后不中断继续执行update语句
可以使用MySQL的事务机制来实现批量执行update语句,中间update报错后不中断继续执行update语句。具体步骤如下:
1. 开启事务:START TRANSACTION;
2. 执行多条update语句,如果其中某条语句执行失败,则不会影响后续语句的执行。
3. 提交事务:COMMIT; 如果在执行过程中出现了错误,可以回滚事务:ROLLBACK;
mysql 回滚执行delete语句会加锁吗
当使用 `DELETE` 语句删除数据时,MySQL 会对被删除的行加排它锁(`X` 锁),以防止其他事务在删除操作完成之前对这些行进行修改或删除。如果你使用了 `BEGIN` 或 `START TRANSACTION` 开启了一个事务并且执行了 `DELETE` 操作,但是在执行 `COMMIT` 之前执行了 `ROLLBACK` 操作,那么 MySQL 会回滚这个事务并释放所有加的锁。
注意,如果你在执行 `DELETE` 操作时使用了 `SELECT ... FOR UPDATE` 或 `SELECT ... LOCK IN SHARE MODE` 语句,它们也会为选定的行加锁,并且这些锁也会在回滚操作时被释放。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)