我正在解决 MySQL 错误“尝试获取锁定时发现死锁;尝试重新启动事务”。
我将不得不更新程序以允许死锁。该SELECT
语句是否可能会产生死锁错误?我知道它只是一个读锁,所以多重选择不会有问题,但是如果有一个INSERT
, UPDATE
orDELETE
语句(可能有连接的子查询)和一个SELECT
语句(可能有连接或子查询)怎么办?
是否有可能在SELECT
而不是INSERT
,UPDATE
或上抛出错误DELETE
。
我有一个看起来像这样的金融交易(伪):
begin
select record for update
update record(same record as selected)
insert another record into another table
commit
Run Code Online (Sandbox Code Playgroud)
如果我SELECT ... FOR UPDATE
在事务中调用,是否只有在提交事务时才会释放特定行的锁?