有一个名为“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数据库中强制引用完整性的一种方法。外键意味着一个表中的值也必须出现在另一个表中。
引用的表称为父表,而具有外键的表称为子表。子表中的外键通常引用父表中的主键。
可以在CREATE TABLE语句或ALTER TABLE语句中定义外键。
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)
);