Добрый вечер,
У меня проблема с простым "INSERT" sql заявлением, что я предполагал, что это "бомба безопасна", но иногда я сталкиваюсь с ошибкой "duplicate key".
Хорошо, я дам вам простой sql код
- инструкция 1: создание таблицы
CREATE TABLE tab_1 (
code integer,
field_1 integer,
PRIMARY KEY (code)
) WITHOUT OIDS;
- инструкция2: вставка
INSERT INTO tab_1 (code)
SELECT
(SELECT COALESCE(MAX(code), 0) + 1 FROM tab_1
)
;
Ну, проблема, с которой я сталкиваюсь, заключается в том, что «иногда» без какой-либо (ИМХО) причины, инструкция 2 возвращает «дубликат ключа» на вставке для поля "код". Очевидно, что это происходит случайно, и я не могу объяснить, «почему» это происходит или «как», я могу воспроизвести проблему за столом. Единственное решение, которое, кажется, работает, это перехватить ошибку и повторить вставку, пока она не пройдет нормально.
Хорошо, значит, «решение подано», но основная проблема заключается в том, что этот способ использования «вставки» в "широко используется в ОГРОМНОМ приложении с МНОЖЕМ таблиц и переупорядочивает весь код, в котором вызывается одна и та же операция (отклонено для разных таблиц) - это то, чего я хочу избежать.
Спасибо за помощь