Что происходит с запросами к таблицам, которые используются в этой транзакции, до совершения транзакции? - PullRequest
0 голосов
/ 15 июня 2011

У меня есть ситуация, когда мне нужно заблокировать 2 таблицы, пока некоторые операции не будут выполнены над этими 2 таблицами по отдельности. Для этого я выбрал «СДЕЛКИ». Итак, между «START TRANSACTION» и «COMMIT» .. если кто-то пытается вставить в эти таблицы, что происходит с этими запросами? будут ли они поддерживаться в очереди и будут выполнены после завершения транзакции? В идеале, мои требования ... они не должны вставляться, пока моя транзакция не будет подтверждена.

Пожалуйста, кто-нибудь расскажет мне сценарий.

Заранее спасибо! SuryaPavan

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Когда транзакция инициируется, она изолируется от остального мира. Это я в КИСЛОТА .

Если во время транзакции кто-нибудь попытается вставить что-либо, вставка произойдет, но это не нарушит выполняемую транзакцию. То же правило применяется в другом направлении.

Если у вас есть требование буквально заблокировать всю таблицу для вставки до тех пор, пока ваша транзакция не будет успешной - это пахнет плохим дизайном, и вам следует пересмотреть, действительно ли то, что вы делаете, является оптимальным.

0 голосов
/ 15 июня 2011

Если они были вставлены до того, как была совершена ваша транзакция (то есть в середине вашей транзакции), это сделало бы транзакции довольно бесполезными.

Я предполагаю, что вы используете mysql (поскольку ваш вопрос помеченс этим) ... почему бы не открыть два сеанса командной строки для вашей базы данных и попробовать, чтобы увидеть, что происходит?Это займет гораздо меньше времени, чем размещение вашего вопроса и ожидание ответа, и вы, вероятно, узнаете больше в процессе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...