Не добавляется запись в таблицу

Администрирование баз данных (Pervasive.SQL, MS SQL, Oracle, утилита Support)

Модераторы: m0p3e, edward_K, Модераторы

Ответить
sim
Местный житель
Сообщения: 1805
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Россия

Не добавляется запись в таблицу

Сообщение sim »

gal711 MSSQL
С некоторого времени стало невозможно (MSSQL-ем) добавить записи в таблицу партий. Из Галактики - добавляются, а самим MSSQL-ем - нет. Выдается сообщение о дублировании ключа в нулевом индексе. Дословно:
Cannot insert duplicate key row in object 'T$KATPARTY' with unique index 'T$KATPARTY0'
Где тут собака порылась?
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

случаем в nrec 0 пишите?
sim
Местный житель
Сообщения: 1805
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Россия

Сообщение sim »

select * from t$katparty where f$kod='9999999'
insert into t$katparty(f$kod,f$name)
select '9999999','9999999'
select * from t$katparty where f$kod='9999999'
delete t$katparty where f$kod='9999999'
select * from t$katparty where f$kod='9999999'
WiRuc
Местный житель
Сообщения: 414
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж

Сообщение WiRuc »

Это значит, что в таблице есть запись с F$NREC=0x8000000000000000 (NULL в понимании Галактики). Галактика при вставке заранее генерит новый NREC, а при вставке с помощью EM генерацией NREC занимается триггер, т.е. сначала вставляется запись с NREC=0x8000000000000000, а затем для нее генериться новый NREC. Кстати, именно поэтому в Галактике невозможна массовая вставка записей, только по одной можно вставлять. У вас в результате сбоя образовалась запись с NREC=0x8000000000000000 и поэтому теперь невозможно вставить новую. Удалите сбойную запись и все будет хорошо :D
Кстати, еще бывают ситуации, когда на какой-то одной машине перестают генериться NREC для записей вставляемых не из Галактики. В этом случае помогает перезагрузка этой машины и запуск на ней Галактики с созданием записи в той таблице для которой перстали генериться NREC.
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

ну вот, а кто значение nrec генерить будет? только вы сами!
sim
Местный житель
Сообщения: 1805
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Россия

Сообщение sim »

Всем спасибо! За ликбез :wink:
Max_Fin писал(а):ну вот, а кто значение nrec генерить будет? только вы сами!
А как будет выглядеть эта строчка? :?
WiRuc
Местный житель
Сообщения: 414
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж

Сообщение WiRuc »

Max_Fin писал(а):ну вот, а кто значение nrec генерить будет? только вы сами!
Еще раз :D
При внешнем доступе к таблице за генерацию NREC отвечает триггер и в обычной ситуации все работает. Можно, конечно, и самостоятельно генерить NREC перед вставкой. Чтобы понять как это делается нужно посмотреть код триггера на вставку для какой-либо таблицы.
ecasoft
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"

Сообщение ecasoft »

В данном каталоге всегда разные проблемы при вставках..модификациях и т.д., потому что
полей уникальных тьма (надо вообще за такие вещи голову разработчику оторвать - ведь нигде в других талицах такого нет) - это и код и имя..вообщем посмотрите словарь и выполните все условия по уникальности ВСЕХ уникальных полей.
Ответить