Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.11;
Скачать: CL | DM;

Вниз

Создание внешнего ключа - глюк ?   Найти похожие ветки 

 
PEAKTOP ©   (2006-11-18 13:38) [0]

Доброе время суток
Есть таблицы

CREATE TABLE TABL$MASTER(
 ID INTEGER NOT NULL,
 .....
);

ALTER TABLE TABL$MASTER
 ADD CONSTRAINT C_PK$MASTER_ID PRIMARY KEY (ID) USING INDEX INDX$MASTER_ID;

CREATE TABLE TABL$DETAIL(
 MASTER_ID INTEGER NOT NULL,
 ........
);

При попытке создать внешний ключ

ALTER TABLE TABL$DETAIL
 ADD CONSTRAINT C_FK$DETAIL_MASTER_ID FOREIGN KEY (MASTER_ID) REFERENCES TABL$MASTER (ID) ON DELETE CASCADE ON UPDATE CASCADE USING INDEX INDX$DETAIL_MASTER_ID;

Выдает ошибку

Невозможно подтвердить транзакцию:
violation of FOREIGN KEY constraint "".
violation of FOREIGN KEY constraint "C_PK$MASTER_ID" on table "TABL$MASTER".
Foreign key reference target does not exist.

Ошибка даже не в выполнении скрипта на COMMIT транзакции. В структуре базы на таблицу TABL$MASTER ссылается уже с десяток таблиц. Попробовал монопольно к базе подключиться - тоже самое.
В чем дело может быть ?


 
unknown ©   (2006-11-18 17:40) [1]

Хм.
После изменения метаданных следует реконнект делать.
А точно reference target exist ?
Если проблема не в этом - тогда gfix-ом ошибки искать.


 
PEAKTOP ©   (2006-11-18 18:42) [2]

> После изменения метаданных следует реконнект делать.

В том и вопрос, что не могу я это изменение метаданных сделать.

 ......
 IBSQL.ExecSQL; // пока все нормально
 IBSQL.Transaction.Commit; // Вот здесь и ловим исключение.
 .....
 
В IBExpert-e тоже самое.


 
PEAKTOP ©   (2006-11-18 18:49) [3]

Нашел. В таблице TABL$DETAIL была кривая запись. Выполнение скрипта

DELETE FROM TABL$DETAIL DD
WHERE NOT(EXISTS(SELECT MM.ID FROM TABL$MASTER MM WHERE (MM.ID = DD.MASTER_ID)))

все вылечило.

Пост считаю закрытым.


 
Desdechado ©   (2006-11-18 20:17) [4]

violation of FOREIGN KEY constraint
это переводится как наружение ссылочной целостности, т.е. очевидно, что есть записи, не удовлетворяющие этому условию



Страницы: 1 вся ветка

Текущий архив: 2007.02.11;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.03 c
3-1164198874
Stanislav
2006-11-22 15:34
2007.02.11
Сообщение в FastReport


2-1169605882
exolon
2007-01-24 05:31
2007.02.11
как cделать,чтобы TEdit воспринимал одни цифры и DecimalSeparator


2-1169711509
Димыч
2007-01-25 10:51
2007.02.11
Выделение в TreeView


3-1163606293
AlexWlad
2006-11-15 18:58
2007.02.11
Невозврат значения из Stored Procedure


15-1169150541
Cyrax
2007-01-18 23:02
2007.02.11
Общий принцип организации виртуальных методов и...