Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Firebird, Interbase > не могу добавить внешний ключ


Автор: ksili 16.3.2008, 12:53
Не могу добавить внешний ключ таким скриптом:

Код

alter table "Routes"
add constraint FK_ROUTES_1
foreign key ("GwId")
references "Gateways"("GwId")


Сообщение об ошибке такое:
Код

This operation is not defined for system tables.
unsuccessful metadata update.
could not find UNIQUE INDEX with specified columns.


Описание таблиц:
Код

CREATE TABLE "Gateways" (
    "GwId"       INTEGER,
    "GwName"     VARCHAR(80),
    "IPaddr"     VARCHAR(16),
    "IPport"     INTEGER,
    "CodecId"    INTEGER,
    "Proto"      INTEGER,
    "FastStart"  INTEGER,
    PROXY_MODE   INTEGER,
    "inPhone"    INTEGER,
    "inAni"      INTEGER
);

CREATE UNIQUE INDEX GW_PRIMARY ON "Gateways" ("GwId");


Код

CREATE TABLE "Routes" (
    "RouteId"   INTEGER,
    "PrefixId"  INTEGER,
    "GwId"      INTEGER,
    PROXY_MODE  INTEGER,
    "Rule"      VARCHAR(32),
    "Priority"  INTEGER,
    "AuthId"    INTEGER,
    "Cost"      INTEGER
);

CREATE UNIQUE INDEX ROUTE_PRIMARY ON "Routes" ("RouteId");


Добавлено через 5 минут и 4 секунды
Проблема решена.

Пересоздал по-нормальному первичные индексыи и создался внешинй ключ. Теперь они такие:
Код

ALTER TABLE "Routes" ADD CONSTRAINT PK_ROUTES PRIMARY KEY ("RouteId");


Код

ALTER TABLE "Gateways" ADD CONSTRAINT PK_GATEWAYS PRIMARY KEY ("GwId");

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)