我怀疑触发器中的隔离级别是如何工作的。
我必须在一个表上执行一个插入,并且我需要在插入之前做一些检查。
因此,我有一个比较某些值的触发器“在插入之前”。
我需要阻塞表,以阻止其他插入,做检查,插入新行,然后解锁表。
为了做到这一点,如果我有一个具有可序列化隔离级别的触发器,表上的锁将只在新插入之后释放?
发布于 2022-07-06 14:35:33
如果不使用自动提交,斯莱尔在MySQL中所做的唯一事情就是将SELECT变成SELECT ... LOCK IN SHARE MODE。这并不能锁定整张桌子。
SELECT
SELECT ... LOCK IN SHARE MODE
如果需要阻止并发插入,请使用锁表。您负责显式地解锁,否则如果启动新事务,就会有一个隐式解锁表。
但是您不能在触发器中使用LOCK TABLES。在尝试INSERT之前,您必须先这样做。
LOCK TABLES
INSERT
https://stackoverflow.com/questions/72884135
相似问题