Форум: "Базы";
Текущий архив: 2007.02.11;
Скачать: [xml.tar.bz2];
ВнизСоздание внешнего ключа - глюк ? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.046 c