72 похожих чатов

Такой вопрос если я начинаю делать sql запросы и потом

делаю коммит, может ли при коммите появится какая-то логическая ошибка или ошибки появятся на этапе sql запроса?

23 ответов

15 просмотров

Эээ... а о какой именно СУБД речь, и что Вы имеете в виду под "логической ошибкой"?

Максим- Автор вопроса
Yaroslav Schekin
Эээ... а о какой именно СУБД речь, и что Вы имеете...

PostgreSQL. Ошибка - хз ну например ключ null вставляется или что то подобное, вообще какие ошибки могут быть при коммите , кроме того что бд может отвалится. И еще Допустим если у меня комит, не прошел, нужно ролбэк делать?

Максим
PostgreSQL. Ошибка - хз ну например ключ null вста...

Да много какие исключения могут быть при commit, в принципе (чаще всего — связанные с serialization failures и deferred constraints / triggers). Простой пример: https://dbfiddle.uk/?rdbms=postgres_13&fiddle=09cbb58dc3b0e75880bf463789187c78 > Допустим если у меня комит, не прошел, нужно ролбэк делать? Что такое "не прошёл"? В любом случае, от лишнего ROLLBACK проблем не будет (если он был лишним — получите warning да и всё).

Теоретически может появиться что-то из ошибок при выполнении commit, но это очень редкое явление, почти нет таких СУБД, что откладывали бы проверки целостности и правил до момента выполнения commit. Причина простая: это дорого. Однако, есть важное исключение из этого правила: при выполнении распределенных транзакций commit наоборот будет вызывать ошибки достаточно часто.

Максим
PostgreSQL. Ошибка - хз ну например ключ null вста...

Нет, делается сам. Но есть нюансы при организации вложенных транзакций

Ilya Zviagin
Теоретически может появиться что-то из ошибок при ...

В PostgreSQL это может быть чаще, чем в других, наверное — из-за особенностей реализации isolation. Да и вообще, если программист решил, что ему нужны deferrable constraints — СУБД будет это делать, дорого это или нет. ;)

Ilya Zviagin
Нет, делается сам. Но есть нюансы при организации ...

У меня кстати случилась одна фигня на днях в MS SQL, я думал что в зависимости от уровня ошибки raiseerror сделает rollback сам. Короче зависла база я так понял в ожидании конца транзакции :D

Igor S
У меня кстати случилась одна фигня на днях в MS SQ...

Нет, raise error лишь передает ошибку клиенту

Ilya Zviagin
Нет, raise error лишь передает ошибку клиенту

Но там уровни тип есть, где-то на stack вычитал что мол транзакцию отменит

Igor S
У меня кстати случилась одна фигня на днях в MS SQ...

Обсуждался-то PostgreSQL. ;) Что касается MS SQL, это зависит от настроек сессии, вот пример: https://dbfiddle.uk/?rdbms=sqlserver_2016&fiddle=a0f3fe8b42019a2f2d02fdc2f000156a @MasterZiv — тоже см. пример выше. Более того, неиспользование XACT_ABORT — ошибка при написании хранимок, которую совершают почти все, мне кажется. :( См. http://www.sommarskog.se/error_handling/Part1.html , если что.

Yaroslav Schekin
Обсуждался-то PostgreSQL. ;) Что касается MS SQL, ...

Мб будет шок сейчас, но это был триггер))

Igor S
Мб будет шок сейчас, но это был триггер))

Нет, совсем не будет. См. статью, опять-таки.

Yaroslav Schekin
Обсуждался-то PostgreSQL. ;) Что касается MS SQL, ...

Я писал хранимки когда ещё не было никаких xact abort, - все норм

Yaroslav Schekin
Обсуждался-то PostgreSQL. ;) Что касается MS SQL, ...

Ммм, вот оно чё, понял принял, спасибо, буду знать)

Ilya Zviagin
Я писал хранимки когда ещё не было никаких xact ab...

А я видел кучи написанных без XACT_ABORT хранимок, как и последствия этого. И нет, совсем не "норм" ("нет очевидных ошибок" <> "всё нормально")! И даже на сайте, на который я давал ссылку, где-то было всё это детально описано, по версиям MS SQL (spoiler: чем дальше в прошлое, тем страшнее, в среднем).

Yaroslav Schekin
А я видел кучи написанных без XACT_ABORT хранимок,...

Все решается дисциплиной кодирования

Ilya Zviagin
Все решается дисциплиной кодирования

Да-да, видел я, как она "решается". Нет, если всё вот это http://www.sommarskog.se/error_handling/Part2.html заучить наизусть (это я нашёл ссылку, о которой писал выше) — может быть, но "дисциплинированные кодеры" об всём этом, скорее всего, даже не подозревают. ;)

Ilya Zviagin
Так все дело в силе воли!

Нет, писать нужно просто и правильно, а не заучивать всякую дурь, которая ещё и меняется от версии к версии, IMNSHO. Вот, там даже есть summary (которая подходяще называется "Throw Your Ideals Away – This is SQL Server"): http://www.sommarskog.se/error_handling/Part3.html#throwidealsaway ;)

Похожие вопросы

Обсуждают сегодня

Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
8
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
7
Вот объясните, как это работает: Вот есть допустим unix-подобная система, и программа запускает допустим printf или fork, как это передается ядру, и как оно обрабатывать начин...
Егор
14
Всем привет Подскажите, какой план выбирать на Heroku Если я хочу запускать scheduled jobs (queues) на своем сервере? Я так понимаю для queues запускаются на отдельных workers...
Egor Chernenko
1
А какие существуют способы обработки ошибок выделения памяти в ядре? Т.е., допустим, есть функция, которая возвращает адрес свободной страницы в физической памяти и диапазон в...
disba1ancer
51
Всем привет. Сейчас я изучаю erlang по книге Erlang and OTP in action. Дошел до главы где реализуется первый gen server на примере tcp rpc сервера. Меня очень сильно смутил ко...
Freezing Death
12
Карта сайта