metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-04-07 09:00 pm

А вот еще про разницу между СУБД

Выполняем в транзакции ошибочный запрос (переполнение или нарушение констрейнтов)
Firebird: текущий запрос атомарно не выполняется, транзакция остается активной и позволяет выполнять команды дальше.
Postgresql: транзакция становится некошерной и в ней более ни одна команда не выполняется.

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

[identity profile] falcrum.livejournal.com 2013-04-07 06:04 pm (UTC)(link)
Фиг его знает, хорошо ли не руками давать роллбэк - во всяком разе, иметь возможность сказать "ну и фиг с ним!" хотелось бы.

[identity profile] metaclass.livejournal.com 2013-04-07 06:09 pm (UTC)(link)
Вот я к такому привык, потому что обычно я все разумные ошибки проверяю, а неучтенные означают, что там все плохо и надо руками делать роллбак в finally.

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

[identity profile] berezovsky.livejournal.com 2013-04-07 06:10 pm (UTC)(link)
А какая разница, если откат делать.

[identity profile] metaclass.livejournal.com 2013-04-07 06:17 pm (UTC)(link)
Вообще да, в большинстве моих случаев - никакой.

[identity profile] madeveloper.livejournal.com 2013-04-07 07:36 pm (UTC)(link)
Разница начинает ощущаться из SQL-консоли...

[identity profile] enternet.livejournal.com 2013-04-07 09:09 pm (UTC)(link)
А откуда у вас берутся ошибки в транзакциях? Может быть стоит освоить оператор MERGE? Я не в курсе, есть ли он или аналоги в перечисленных БД.

[identity profile] fraks-nsk.livejournal.com 2013-04-08 01:49 am (UTC)(link)
MERGE в Firebird есть, но это тут ни при чем.
Откуда берутся ошибки - в исходном посте написано, в первой строке, в скобочках.
Edited 2013-04-08 01:49 (UTC)

[identity profile] metaclass.livejournal.com 2013-04-08 04:26 am (UTC)(link)
Автоматическая тестилка. Она выполняет и обычные и ошибочные операции.

[identity profile] tzirechnoy.livejournal.com 2013-04-08 05:26 am (UTC)(link)
В postgres для цэнителей ужэ несколько лет есть nested transactions.

[identity profile] enternet.livejournal.com 2013-04-08 11:01 am (UTC)(link)
Что интересно, автор меня понял - а ты нет.

[identity profile] berezovsky.livejournal.com 2013-04-08 11:10 am (UTC)(link)
Там база ошибками сыплет от наплыва запросов, а не запросы из-за нарушений целостности.

[identity profile] metaclass.livejournal.com 2013-04-08 11:12 am (UTC)(link)
Не, это два разных случая. У меня было и то и другое - старый провайдер и странные глюки в нем под нагрузкой и отдельно нарушения целостности.

[identity profile] fraks-nsk.livejournal.com 2013-04-08 03:29 pm (UTC)(link)
IMHO наоборот.