У меня есть простая хранимая процедура, и для целей тестирования я закомментировал оператор 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
Я хотел проверить, что произойдет, если интернет-кабель будет отключен, а транзакция еще не совершена. В результате транзакция откатывается, но блокировка всей таблицы не снимается. В результате я ничего не могу сделать со столом. Иногда требуется до двадцати минут, чтобы снять блокировку просто так. Как я могу убедиться, что используемые ресурсы разблокированы при ROLLBACK?