Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
11 / 11 / 4
Регистрация: 01.02.2011
Сообщений: 111

commmit/rollback (транзакции)

14.03.2012, 14:59. Показов 1461. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа форумчане помогите разобраться с транзакциями.

У меня идея сдеать транзакцией несколько запросов как-то так:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$trigg = array();
 
$trigg[] = mysql_query ("START TRANSACTION");
 
$trigg[] = mysql_query ("SELECT ...");
 
$trigg[] = mysql_query ("UPDATE ...");
 
$trigg[] = mysql_query ("DELETE ...");
 
if(in_array(false, $trigg)) {
 
  mysql_query ("ROLLBACK");
 
}else{
 
  mysql_query ("COMMIT");
 
}
Адекватен-ли подобный подход?

И вопрос второй.

Если все операции успешно завершились, но по какойто причине не была выполнена инструкция "COMMIT" сервер подвиснет, если кто-то другой будет пытаться выполнить эту-же транзакцию?
Ведь насколько я понимаю по умолчанию блокировки таблиц стоят в режиме SERIALIZABLE и никто не может выполнить запрос на доступ к таблицам используемым другой транзакцией, а данная транзакция еще не закончена, поскольку MySQL сервер не получил команду COMMIT?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.03.2012, 14:59
Ответы с готовыми решениями:

Не срабатывает rollback
Доброго времени суток. Прошу помощи сам не могу до конца разобраться. Есть такой код: protected $_db; private ...

Транзакции и WHERE
Здравствуйте. Немного не разобрался с транзакциями, помогите уяснить один момент. Допустим у нас есть два запроса, которые...

Транзакции + кодировка
Народ подскажите в чем дело.... Проблема вот в чем: при использовании транзакции в базу не заносятся нормально кириллица, пишет коряки...

4
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
14.03.2012, 15:19
Цитата Сообщение от ruzab
Адекватен-ли подобный подход?
Вопрос о том, что включать в транзакцию, определяется бизнес-условиями, а не "адекватностью".
0
11 / 11 / 4
Регистрация: 01.02.2011
Сообщений: 111
14.03.2012, 23:21  [ТС]
Вопрос о том, что включать в транзакцию, определяется бизнес-условиями
Ну да, это понятно.
Я видимо неясно обозначил вопрос - вопрос не в том что именно включать, а нормально-ли имено так организовать обработку с точки зрения НЕ синтаксиса и расположения запросов, а вобще подхода к работе с транзакциями средствами php+mysql?

Т.е. первый вопрос он как-бы вытекает из второго - они тесно взаимосвязаны.

Ну вот допустим не выполнился mysql_query ("COMMIT") по каким-то причинам и как повлияет эта ошибка на работу сервера БД?

- При появлении ошибки сервер MySql откатит все изменения для данного соединения?

- Или продолжит работу и подвесит БД, и все остальные запросы для данного соединения будут рассматриваться как одна большая транзакция, а поскольку транзакция не завершена - остальные пользователи будут ждать ее завершения (как в случае с блокировкой) ?

Вот что именно непонятно ...
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
15.03.2012, 09:47
Цитата Сообщение от ruzab
а вобще подхода к работе с транзакциями средствами php+mysql?
PHP здесь ни при чем, вопрос чисто по серверу MySQL

Я не столь знаком с архитектурой MySQL, чтобы ответить точно (по Oracle я бы расписал все подробно ), поэтому чисто логически:

Цитата Сообщение от ruzab
Ну вот допустим не выполнился mysql_query ("COMMIT") по каким-то причинам и как повлияет эта ошибка на работу сервера БД?
COMMIT может не выполнится либо при падении сервера, либо при падении сессии (в последнем случае не всегда). Т.е. это дело достаточно редкое.

Цитата Сообщение от ruzab
Или продолжит работу и подвесит БД
Если бы это было так, то такая СУБД была бы реально непригодна для многопользовательской работы
1
11 / 11 / 4
Регистрация: 01.02.2011
Сообщений: 111
15.03.2012, 10:39  [ТС]
Всё понял, спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.03.2012, 10:39
Помогаю со студенческими работами здесь

Транзакции из PHP
Доброго времени суток. Для выполнения запросов к БД пользуюсь функцией mysql_query($sql); В случае с обычными запросами всё...

Транзакции MySql
есть код считающий кол-во остатков, проблема при обращении с нескольких клиентов не учитывается INSERT который был выполнен до SELECT в...

возможности транзакции
Господа форумчане, поделитесь опытом! Возможно ли изменение суммы платежа после начала транзакции? Спасибо!

Транзакции в PHP+MySQL
Здраствуйте. Пишу форум и у меня такая задача. При создании темы юзер имеет право аттачить файл. При этом необходимо файл помещается...

php+MySQL транзакции
Доброго времени суток! Есть такая задача: Создайте приложение (PHP + MySQL), которое позволяет переводить сумму со СЧЕТА 1 на СЧЕТ 2....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru