Я получаю повторяющуюся ошибку ключа, DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, когда пытаюсь ВСТАВИТЬ записи. Первичный ключ — это один столбец, INTEGER 4, Generated, и это первый столбец.
вставка выглядит так: ВСТАВИТЬ В СХЕМУ.ТАБЛИЦА1 значения (ПО УМОЛЧАНИЮ, ?, ?, ...)
Насколько я понимаю, использование значения DEFAULT просто позволит DB2 автоматически сгенерировать ключ во время вставки, чего я и хочу. Это работает большую часть времени, но иногда/случайно я получаю ошибку дублирующего ключа. Мысли?
В частности, я работаю с DB2 9.7.0.3, используя Scriptella для копирования набора записей из одной базы данных в другую. Иногда я могу обработать кучу без проблем, в других случаях я получаю сообщение об ошибке сразу же, в других случаях после 2 записей, 20 записей, 30 записей и т. д. Не похоже, что это закономерность, и это не одно и то же записывать каждый раз. Если я изменю данные, чтобы скопировать 1 запись вместо группы, иногда я получаю ошибку один раз, тогда все в порядке в следующий раз.
Я подумал, может быть, какой-то другой процесс вставлял записи во время моей пакетной программы и одновременно создавал ключи. Однако в таблицах, которые я копирую, не должно быть других пользователей/процессов, пытающихся вставить записи в течение того же периода времени, хотя может происходить ЧТЕНИЕ.
Изменить: добавление информации о создании:
Create table SCHEMA.TABLE1 (
SYSTEM_USER_KEY INTEGER NOT NULL
generated by default as identity (start with 1 increment by 1 cache 20),
COL2...,
)
alter table SCHEMA.TABLE1
add constraint SYSTEM_USER_SYSTEM_USER_KEY_IDX
Primary Key (SYSTEM_USER_KEY);