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

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

Не могу создать внешний ключ [D5, Firebird]


RDA ©   (2003-06-26 17:06:00) 

Вот листинг
CREATE DOMAIN ID AS INTEGER NOT NULL;

CREATE TABLE PID (
ORG ID NOT NULL,
PIDID ID NOT NULL,
PARENT ID DEFAULT "-1" NOT NULL,
KIND ID DEFAULT "0" NOT NULL,
NAZV NAZV070 NOT NULL COLLATE WIN1251);

CREATE TABLE FIZ (
ORG ID NOT NULL,
PID ID NOT NULL,
SOTR ID NOT NULL,
IDKOD NAZV010 NOT NULL COLLATE WIN1251,
FNAME FIO COLLATE WIN1251
....)

CREATE TABLE SOTR (
ORG ID NOT NULL,
PID ID NOT NULL,
ID ID NOT NULL,
GOS LOGIK NOT NULL,
DATAOPEN DATA,
DATACLOSE DATA
....)

ALTER TABLE FIZ ADD CONSTRAINT PK_FIZ PRIMARY KEY (ORG, PID, SOTR);
ALTER TABLE PID ADD CONSTRAINT PK_PID PRIMARY KEY (ORG, PIDID);
ALTER TABLE SOTR ADD CONSTRAINT PK_SOTR PRIMARY KEY (ORG, PID, ID);

Не могу связать внешним ключом таблицы SOTR и FIZ с таблицей PID
ALTER TABLE SOTR ADD CONSTRAINT FK_SOTR_PID FOREIGN KEY (PID) REFERENCES PID (PIDID) ON DELETE CASCADE ON UPDATE CASCADE;


Zacho   (2003-06-26 19:05:00) [1]


> RDA © (26.06.03 18:43)

Нет, только на первичный ключ полностью. Если не устраивает связь по ORG, PIDID то напиши подробнее как именно должны быть связаны таблицы.


RDA   (2003-06-26 18:43:00) [2]

А разве он не может ссылаться на поле входящее в состав первичного ключа?
Если нет то как быть. Создавать для этого поля уникальный индекс и потом вводить его в состав первичного ключа?


Zacho   (2003-06-26 18:34:00) [3]

FK может ссылаться только на первичный ключ или UNIQUE CONSTRAINT.
Так что надо (если это именно то, что тебе надо) так:
ALTER TABLE SOTR ADD CONSTRAINT FK_SOTR_PID FOREIGN KEY (ORG,PID) REFERENCES PID (ORG,PIDID) ON DELETE CASCADE ON UPDATE CASCADE;


Наверх

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