foreign key trouble
Добавлено: 28 апр 2005, 19:08
Приветствую.
Имею IB 6.0
и
теперь пытаюсь сделать ограничение с T2(ID1) на T1(ID)
Получаю:
Подскажите, что делаю не так.
Имею IB 6.0
Код: Выделить всё
CREATE TABLE T1 (
...
ID INTEGER NOT NULL
...
);
ALTER TABLE T1 ADD CONSTRAINT A1_UNQ1 UNIQUE (ID);
CREATE UNIQUE INDEX IDX1_T1 ON T1 (ID);
Код: Выделить всё
CREATE T2 (
ID1 INTEGER NOT NULL,
ID2 INTEGER NOT NULL
);
Код: Выделить всё
alter table T2 add constraint FK_SP_1 foreign key (ID1) references T1(ID)
Это читалThis operation is not defined for system tables.
unsuccessful metadata update.
STORE RDB$REF_CONSTRAINTS failed.
action cancelled by trigger (1) to preserve data integrity.
Name of Referential Constraint not defined in constraints table.
Но, вроде, под описанные условия не подпадаю.не удается создать вторичный ключ (FK)
при ALTER TABLE X ADD [constraint FK_X] FOREIGN KEY (ID) REFERENCES Y (ID);
выдается сообщение
"unsuccessful metadata update, STORE RDB$REF_CONSTRAINTS failed,
action cancelled by trigger (1) to preserve data integrity,
Name of Referential Constraint not defined in constraints table."
A: в IB 6.0 (например 6.0.0.627) не удается сделать FK, если у таблицы Y к этому моменту уже есть FK по ID от любой другой таблицы, или просто индекс по полю ID, название которого начинается с буквы меньше S. Либо нужно сменить версию (в Firebird RC2 такой ошибки нет, как ее нет и в IB 5.6), либо располагать создание FK отдельно, в порядке detail-master, после чего создавать индексы (если по этим полям они вообще нужны).
Подскажите, что делаю не так.