Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > MySQL > Два апдейта зависящие друг от друга |
Автор: Plavozont 16.12.2011, 12:03 |
Мне нужно выполнить два оператора UPDATE, если не сработал первый - не выполнять второй, если не сработал второй - не выполнять первый. Как это сделать ? Запросы являются параметрами функции, поэтому не срабатывать они будут из-за синтаксической ошибки или неправильных названий таблиц/полей как правило. |
Автор: sir_nuf_nuf 16.12.2011, 13:50 |
Не выполняйте их вообще. Все верно - ни один не работает - ни один не запускается. Если серьезно - у вас противоречие в условии. Нельзя узнать сработал ли запрос пока его не запустишь. |
Автор: Akina 16.12.2011, 14:09 |
Оберни их в одну транзакцию. |
Автор: Plavozont 16.12.2011, 15:39 | ||
Таблицы в основном MyISAM, не пойдёт... Есть какой-то способ помимо транзакций, для таблиц не поддерживающих транзакции http://mysql.ru/docs/man/ANSI_diff_Transactions.html в котором мало примеров и я ничё не понял. Может быть также есть способ проверить обречён ли запрос на провал ? |
Автор: solenko 16.12.2011, 17:25 |
Просто проверить синтаксис можно, например, выполнив explain (если он работает для update) |
Автор: Plavozont 16.12.2011, 19:17 | ||
explain не работает для update
А вы если ничего умного предложить не можете то и не умничайте |
Автор: Akina 16.12.2011, 20:41 |
Plavozont, Вы желаете сделать то, что В Ваших конкретных условиях сделать нельзя. И тем не менее упорствуете... "А может, всё-таки можно, мне же очень надо!" ... не тот случай. Перейдите на транзакционный движок. Это гарантирует решение поставленной задачи. Или, если устроит, перейдите на полное триггерное журналирование изменений - правда, оно потребует организации монопольного доступа и блокировки всей БД по записи. Да и ручной откат изменений - та ещё задачка. |
Автор: Plavozont 17.12.2011, 10:08 |
Akina, большое спасибо, жаль что такой облом. Казалось бы такая банальная штука как проверка синтаксиса / правильности названий таблиц/полей и не предоставлена во власть пользователя. |
Автор: Akina 17.12.2011, 21:33 | ||
Синтаксический контроль текста запроса как раз провести можно - правда, не для всех типов запросов... это делает explain. |