有一个带有" salesperson123"名称的父表,带有主键" ssn"
SQL> DESC SALESPERSON123;
Name Null? Type
----------------------------------------- -------- ----------------------------
SSN NOT NULL VARCHAR2(30)
NAME VARCHAR2(30)
START_YR NUMBER
DEPT_NO VARCHAR2(30)
我想创建另一个表" Trip",在其中我想制作" SSN"外键,但是我会遇到以下错误。
SQL> CREATE TABLE TRIP
2 (
3 TRIP_ID VARCHAR2(30),
4 SSN VARCHAR2(30),
5 FROM_CITY VARCHAR2(30),
6 TO_CITY VARCHAR2(30),
7 DEP_DATE NUMBER,
8 RETURN_DATE NUMBER,
9 FOREIGN KEY (SSN) REFERENCES TO SALESPERSON123(SSN),
10 PRIMARY KEY (TRIP_ID)
11 );
FOREIGN KEY (SSN) REFERENCES TO SALESPERSON123(SSN),
*
ERROR at line 9:
ORA-00903: invalid table name
我尝试多次删除并再次创建父表,但无用。
删除TO
。必须是:
FOREIGN KEY (SSN) REFERENCES SALESPERSON123(SSN),
而不是
FOREIGN KEY (SSN) REFERENCES TO SALESPERSON123(SSN),
外键是在Oracle数据库中执行参考完整性的一种方法。外键意味着一个表中的值也必须出现在另一个表中。
引用表称为父表,而带有外键的表称为子表。子表中的外键通常会引用父表中的主要键。
可以在创建表语句或Alter表语句中定义外键。
CREATE TABLE supplier
( supplier_id numeric(10) not null,
supplier_name varchar2(50) not null,
contact_name varchar2(50),
CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)
);
CREATE TABLE products
( product_id numeric(10) not null,
supplier_id numeric(10) not null,
CONSTRAINT fk_supplier
FOREIGN KEY (supplier_id)
REFERENCES supplier(supplier_id)
);