所以我有两张桌子
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);
我需要将外键(来自Boss表的B_surname)放到Client表中。我尝试过使用ALTER TABLE:
ALTER TABLE Client ADD CONSTRAINT Boss_Client_fk FOREIGN KEY (B_Surname) REFERENCES Client(ID);
之后我得到了错误。 谢谢你的帮助。
答案 0 :(得分:1)
我想你想要以下内容。请注意,您可能应该在Oracle中使用VARCHAR2
而不是VARCHAR
。它们目前的工作方式相同,但Oracle可能会更改VARCHAR
的功能,使其符合ANSI标准(其中空字符串''
与{{1}区别开来} ...但我离题了):
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
作为主键,或者至少唯一的。