?

Log in

No account? Create an account

Previous Entry Share Flag Next Entry
(no subject)
Alchemy
bugabuga
Прелесть. Разгребаю порождённое синим работником... Это-ж надо было додуматься до такого :)
Кинуть UPDATE в DB2.
Если DB2 Брыкнется, с кодом "ключ должен быть уникальным", сделать селект и посмотреть, что там дают, сделать rollback.
Почему он хочет сделать rollback несчастному селекту непонятно (поскольку соединение лежит в одной переменной, то второй вызов getConnection благополучно выпинывает первый, с незакрытой транзакцией). Почему ему не понравилась идея "прочитать базу, если нет записи, добавить"? Странно народ думает...

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

Очень хочется за такое задушить. Потому как DB2 8.1 -- нежная, как цветок. И такие издевательства, с потерей "в процессе" оригинального соединения без rollback/commit вызывают у неё культурный шок.


  • 1
хе.
нет, update, в случае 0 rows affected INSERT - я ещё понимаю.
но ТАК-то зачем?

Ну дяденька ж Крутой ДБ2 Админ :) Айбиэмка других в штате не держит :)

Так что при просмотре кода все должны знать, что когда стоит if (sqlErrorCode==-803), то это крутой ДБ2шник проверяет, не наткнулся ли Update на запись с таким-же ключём :) Я скоро половину этих кодов наизусть буду знать.

Разумеется, желательно помнить о факте, что убивание записи тоже может родить такую-же ошибку :) потому как внешние ключи по нескольким полям плодятся с завидной регулярностью :)

А что было, когда админ забыл перенести несколько триггеров... полный экстаз :) А восхитительный факт "памяти" полей при генерации триггеров по звезде... Йессс %) Вот забудут перегенерировать триггеры после добавления ещё одного поля и будет фантомное испарение данных при их срабатывании.

В общем много-много радости детишкам принесла.

  • 1