Я создаю приложение на node.js, используя express и драйвер node-mysql. В моем приложении есть несколько случаев, когда мне нужно сделать серию вставок / обновлений базы данных. Я хочу, чтобы они были в транзакции, чтобы в случае сбоя второй или третьей вставки предыдущие вставки полностью откатывались.
В настоящее время я использую какое-то промежуточное программное обеспечение, которое выполняет START TRANSACTION
при поступлении запроса. Если в процессе обработки запроса возникает какая-либо ошибка, я перехватываю эту ошибку и выполняю ROLLBACK
. Если ошибок не возникает, я выполняю COMMIT
перед отправкой ответа браузеру.
Однако теперь я обеспокоен тем, что это не сработает, когда к приложению одновременно обращаются несколько пользователей, поскольку MySQL выполняет принудительная фиксация, если другой запрос пытается начать свою транзакцию с START TRANSACTION
! В настоящее время я использую только один экземпляр узла и одно соединение MySQL для всех запросов.
Может ли кто-нибудь посоветовать мне, справедливы ли мои опасения, и как мне получить поддержку транзакций?