[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: транзакции. правильно ли использую?
Страницы: 1, 2
Invis1ble
Цитата (twin @ 24.09.2015 - 04:43)
Если в блоке catch скрипт останавливать, то откат будет произведен автоматически.
twin
smile.gif

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
inpost
У тебя идут 3 запроса подряд к таблицам users, statstic, contacts.
В какой-то момент твоя таблица статистики крашится, ну требует банального repair table. Запросы идут очередью, заносишь изменение в первую таблицу (пользователю на баланс повесил 3к долларов), а дальше в статистику (логи) занести правки не можешь. Поэтому ты откатываешь всё назад и пишешь сообщение о том, что "операция временно недоступна".
То есть выводится сайт, выводится внутри раздела лишь уведомление, это значит, что весь код ниже (после операции) отработал!

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
twin
inpost
Это ты кому написал?

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
inpost
twin
ТС, он же попросил пример.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
twin
Цитата (inpost @ 24.09.2015 - 03:00)
ТС, он же попросил пример.

Ну просто обозначай собеседника. Иначе не понятно после дебатов.

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
123456
inpost

может я что-то не так понимаю...

Открываем транзакцию, делаем запрос к первой таблице(данные не вносятся в основную таблицу, а хранятся где-то там. Ведь так?)
Потом мы делаем второй запрос, на нем возникает ошибка, и он не выполняется.
И зачем после этого делать откат, если данные не вносились в основные таблицы, а хранились где-то там?
twin
Цитата (123456 @ 24.09.2015 - 04:44)
И зачем после этого делать откат, если данные не вносились в основные таблицы, а хранились где-то там?

Так они внесутся по команде COMMIT. Причем только в первую таблицу. Второй запрос же с ошибкой.

Поэтому пример Invis1ble не совсем корректен.

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
123456
А если у меня обертка такого вида, то откат не надо делать? Ведь так?

public static function q($sql)
{

$res = self::$mysqli->query($sql);

if (!$res)
{
die('Error DB query');
}

return $res;
}



т.е. при ошибочном запросе, скрипт завершает свое выполнение.
twin
Ну если ты ориентируешься только на ошибки запросов. Однако запрос может и не вернуть ошибку, но не пройти. Кроме того, есть допустим IGNORE, с ней как быть? Может и другая логика быть в обработке транзакции. Так что лучше откатить её вовремя, не полагаясь на случай.

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.