|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Mismatch in datapacket (компоненты IBTable)
База на 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/ Не помогло, ошибка возникает регулярно, но большую часть времени код работает правильно, программа не многопользовательская |