我有一个简单的存储过程,出于测试目的,我已经注释掉了 COMMIT 语句。
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
RESIGNAL;
END;
START TRANSACTION;
SELECT * FROM Kimmel_tree FOR UPDATE;
INSERT INTO Kimmel_tree (name, guid) VALUES('abc', 'abcd');
#COMMIT;
END
我想检查如果在交易尚未提交时拔掉网线会发生什么。结果是事务被回滚,但整个表的锁没有被释放。结果我不能对桌子做任何事情。有时,无缘无故释放锁需要长达 20 分钟。如何确保已使用的资源在 ROLLBACK 时已解锁?