数据库设置了autocommit=0,表是MyISAM引擎的,有一个函数会去更新这张表的数据,并返回被更新的值(mysql自建序列),在spring管理的事务里,循环调用此函数,但是返回的值一样。请问为什么?
参考GPT和自己的思路:
循环调用同一个更新函数,每次更新返回的是被更新的值,但是返回的值却一直相同,这可能是因为MyISAM引擎在执行更新操作时,会把表锁定,导致其他线程无法访问该表,因此在循环调用更新函数时,其他线程无法更新表中的数据,导致函数每次返回的都是同一个值。另外,MySQL中自建序列是基于表的自增长机制实现的,可能也会对返回值造成影响。建议对MyISAM表的锁机制和自增长机制进行深入研究,或尝试使用其他引擎,如InnoDB。