请问innodb引擎中,当使用update或者insert或者delete语句时,如果没有声明事务的话,数据库会给影响的行加锁么?具体机制是怎么样的?
只要你执行update、delete,任何DML,都会有行锁。
区别在于你的实例是否自动提交,即看autocommit是怎么设置的
1.autocommit=1,当你执行update时,加行锁,语句执行完了,事务就自动提交,那么行锁也就释放了;
2.autocommit=0,当你执行update时,加行锁,语句执行完了,如果不commit,也不rollback,那么行锁将一直持续到你结束事务为止。
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
3 回答1.2k 阅读✓ 已解决
2 回答2k 阅读
3 回答2k 阅读
innodb中不存在你说的情况。可见官方文档说明:
也就是说,在innodb中,你的语句肯定在事务中。可分为如下几种情况:
显示声明事务: begin or start transaction