0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 3
|
|
1 | |
Транзакции в PDO и SELECT FOR UPDATE в MySQL23.01.2014, 15:24. Показов 2841. Ответов 2
Метки нет (Все метки)
Уважаемые участники форума, подскажите, пожалуйста, кто знает.
Если скрипт выполняет запрос SELECT FOR UPDATE и последующий UPDATE выбранной строки. Нужно ли оборачивать его в транзакцию? По умолчанию уровень изоляции транзакций REPEATABLE-READ. Таблица MyISAM. Если я правильно понял: 1. При запросах SELECT FOR UPDATE блокируются выбранные в них записи, что решает проблему "фантомов" с таким уровнем изоляции транзакций. 2. Если создавать транзакцию с помощью PDO, то результат запросов окажется в базе только после commit. Если обернуть SELECT FOR UPDATE+UPDATE в транзакцию будет ли в этом случае работать пункт 1?
0
|
23.01.2014, 15:24 | |
Ответы с готовыми решениями:
2
Использование операторов SELECT, DELETE и UPDATE в одном запросе в PDO Вложенные транзакции в PDO Php+mysql что будет если запрос SELECT выполнится быстрее чем UPDATE (в разных потоках) SELECT + Транзакции |
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
|
|
23.01.2014, 17:33 | 2 |
FOR UPDATE не имеет смысла вне транзации. Без транзакции Вы не знаете, сколько и каких изменений было произведено другими клиентами в промежутке между SELECT и UPDATE.
MyISAM не поддерживает транзакции. Им пофиг, они своей жизнью живут. Надо InnoDB.
0
|
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 3
|
|
23.01.2014, 20:15 [ТС] | 3 |
Сделал InnoDB.
То есть, получается: открываем транзакцию, выполняем SELECT FOR UPDATE - получаем ID записи для UPDATE, делаем UPDATE, делаем COMMIT. Так правильно? И "фантомов" в этом случае точно не появится?
0
|
23.01.2014, 20:15 | |
23.01.2014, 20:15 | |
Помогаю со студенческими работами здесь
3
update pdo placeholders PHP PDO UPDATE неработает C++ libpq select грязные транзакции Select in PDO Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |