База на Firebird 2.5
Вставка записей в таблицы ITEM_PARAMS, EVR_ITEMS происходит через компоненты IBTable (atItemParams, atEvrItems).
В таблице EVR_ITEMS поле ITEM_ID с ключем primary key
В таблице ITEM_PARAMS два поля: ITEM_ID, PARAM.
PK_ITEM_PARAMS (primary key) действует на эти два поля.
Периодически возникает ошибка
ОШИБКА:'violation of PRIMARY or UNIQUE KEY constraint "PK_ITEM_PARAMS" on table "ITEM_PARAMS"'
за ней
ОШИБКА:'Mismatch in datapacket.'
Поле ITEM_ID в таблице ITEM_PARAMS заполняется из таблицы EVR_ITEMS, где этому полю присваиваются значения через генератор (генератор выполняется в триггере, выдает значение перед вставкой в таблицу EVR_ITEMS):
AS
begin
NEW.ID = GEN_ID(GEN_EVR_ITEMS_ID,1);
if (new.item_no = -1) then
new.item_no = null;
end
Изменения в базу записываются путем выполнения последовательно
atEvrItems.Open;
atItemParams.Open;
Пробовал убрать триггер и генерировать новые ITEM_ID в коде,
пробовал переписать триггер как в официальном мануале
http://www.ibase.ru/generator/
Не помогло, ошибка возникает регулярно, но большую часть времени код работает правильно, программа не многопользовательская