我正在做一个SELECT ... FOR UPDATE来锁定一条记录,然后进行一些计算,然后进行实际的UPDATE。我正在研究InnoDB数据库。
但是计算结果可能最终处于我不想执行UPDATE的状态。在这种情况下如何取消锁定?
答案 0 :(得分:2)
InnoDB就是这样做的。你需要manage your transactions。
SELECT ... FOR UPDATE
之前,请执行START TRANSACTION
。SELECT ... FOR UPDATE
。COMMIT
。如果您决定不想完成更新工作,请执行ROLLBACK
而不是COMMIT
,并且会丢弃您的交易中的每项更改。数据库返回到START TRANSACTION
之前的状态。
不要忘记COMMIT
或ROLLBACK
,特别是在调试时。如果您忘记了,您的数据库似乎会锁定,因为未来的SELECT ... FOR UPDATE
操作可能会等待您的COMMIT
。 (不要问我怎么知道这个。: - )