Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Первичный ключ [D6, IB6.x]


Belkova ©   (2003-07-17 09:05:00) 

Мастера! Подскажите в чем дело, создаю первичный ключ по 2 полям на что выдается сообщение об ошибке. Если по одному полю, то все проходит нормально. Подскажите, кто знает. Заранее спасибо.
Attempt to store duplicate value (visible to active transactions) in unique index "RDB$PRIMARY91"
null segment of UNIQUE KEY
Statement: Alter Table List_Order
Add Constraint PK_LO Primary Key(L_O_Id, OwnerNew)


Johnmen   (2003-07-17 12:25:00) [1]

>Alexandr © (17.07.03 11:52)

Хотел сказать, при наличии
>старые версиии записей
но при пустой таблице...


Alexandr   (2003-07-17 11:52:00) [2]


> Johnmen ©
> Даже при наличие старых версий, ПК создается для пустой
> таблицы.


не понял, что ты этим хотел сказать?


Belkova   (2003-07-17 10:26:00) [3]

Сделала backup\restore все заработало. Всем Большое Спасибо!!!


Johnmen   (2003-07-17 10:25:00) [4]

Я тут воспроизвел указанную ошибку :)
Причина её - дубликаты пар значений полей !

>Alexandr © (17.07.03 10:00)

Даже при наличие старых версий, ПК создается для пустой таблицы.
Видимо, действительно стоит пробовать backup\restore.

>Belkova

А какова полная структура таблицы ? С ключами, индексами ?


Belkova   (2003-07-17 10:04:00) [5]

Расшифруйте, что такое sweep, если не трудно.


Sergey13   (2003-07-17 10:03:00) [6]

2Belkova (17.07.03 09:51)
>Извиняюсь за неточность формулировки.
А я уж испугался. 8-)
Причина была все таки наверное в наличии NULL во втором поле. Если бы там были просто дубликаты то в сочетании с уникальным первым полем все равно получилась бы уникальная комбинация. А вот с нулыком ПК не построить.
Но если записей уже нет - то и проблема снята. 8-)


Alexandr   (2003-07-17 10:00:00) [7]

старые версиии записей существуют в индексе.
Короче, как минимум sweep как максимум backup\restore


Belkova   (2003-07-17 09:57:00) [8]

Все сделала, как написано. Удалиладанные, подтвердила транзакцию, отключилась от БД, подключилась , попробовала создать ПК и та же ошибка.


Belkova   (2003-07-17 09:51:00) [9]

> Sergey13
Select не может, я сама удалили. Извиняюсь за неточность формулировки.
>JohnMen
Спасибо, попробую.


Sergey13   (2003-07-17 09:47:00) [10]

2Belkova (17.07.03 09:37)
>... и из таблицы удалены все данные.
Это как это Select может удалять?!!!


Johnmen   (2003-07-17 09:40:00) [11]

После удаления всех данных подтверди транзакцию.
Потом попробуй создать ПК.
Не поможет - отключись от БД, подключись, попробуй заново...


Belkova   (2003-07-17 09:37:00) [12]

SELECT L_O_Id, OwnerNew, COUNT(*) FROM Table
GROUP BY L_O_Id, OwnerNew,
После выполнения запроса, выдало по всем NULL, и из таблицы удалены все данные.


Sergey13   (2003-07-17 09:27:00) [13]

2Belkova (17.07.03 09:17)
Посмотри нет ли NULL во втором поле. Если предикат Not Null был установлен на старой (заполненой) таблице то такая ситуевина возможна.


Johnmen   (2003-07-17 09:25:00) [14]

>...поискать дубликат ключа?

SELECT L_O_Id, OwnerNew, COUNT(*) FROM Table
GROUP BY L_O_Id, OwnerNew,


покажет количества дубликатов для каждой пары значений.
Где их >1, там и дубликаты...


Sergey13   (2003-07-17 09:20:00) [15]

Сори поторопился. Скорее всего прав Johnmen © (17.07.03 09:10)


Belkova   (2003-07-17 09:17:00) [16]

Оба поля имеют предикат Not Null. Где можно поискать дубликат ключа?


Sergey13   (2003-07-17 09:11:00) [17]

Во втором поле встречаются дубликаты записей, отчего ПК перестает быт уникальным. Избавься от дубликатов.


Johnmen   (2003-07-17 09:10:00) [18]

Одно из полей, которое должно войти в индекс, не имеет в описании предиката NOT NULL, или имеется дубликат предполагаемого ключа...


Наверх

Титульная страница Поиск, карта сайта Написать письмо