Внешний ключ Oracle
Итак, у меня есть две таблицы
CREATE TABLE Client(
ID NUMBER(10) NOT NULL, (PRIMARY KEY)
Name VARCHAR(30) NOT NULL,
Surname VARCHAR(30) NOT NULL,
Phone NUMBER(11) NOT NULL,
Email VARCHAR(70));
CREATE TABLE Boss(
B_Surname VARCHAR(30) NOT NULL, (PRIMARY KEY)
B_Name VARCHAR(30) NOT NULL);
Мне нужно поместить внешний ключ (B_surname из таблицы Boss) в таблицу Client. Я пытался использовать ALTER TABLE:
ALTER TABLE Client ADD CONSTRAINT Boss_Client_fk FOREIGN KEY (B_Surname) REFERENCES Client(ID);
После этого я получил ошибки. Спасибо за помощь.
1 ответ
Я думаю, что вы хотите следующее. Обратите внимание, что вы, вероятно, должны использовать VARCHAR2
скорее, чем VARCHAR
в Oracle. Сейчас они работают одинаково, но есть вероятность, что Oracle изменит функциональность для VARCHAR
привести его в соответствие со стандартом ANSI (в котором пустые строки ''
отличаются от NULL
с... но я отвлекся)
CREATE TABLE client
( id NUMBER(10) NOT NULL PRIMARY KEY
, name VARCHAR2(30) NOT NULL
, surname VARCHAR2(30) NOT NULL
, phone NUMBER(11) NOT NULL
, email VARCHAR2(70) );
CREATE TABLE boss
( b_surname VARCHAR2(30) NOT NULL PRIMARY KEY
, b_Name VARCHAR2(30) NOT NULL );
А потом:
ALTER TABLE client ADD CONSTRAINT boss_client_fk FOREIGN KEY (surname) REFERENCES boss (b_surname);
Немного странно, что столбец назван surname
в CLIENT
а также b_surname
в BOSS
,
Если ты хочешь b_surname
в BOSS
ссылаясь на surname
в CLIENT
- тогда нужно сделать CLIENT.surname
первичный ключ или, по крайней мере, уникальный.