为什么当我尝试使用第一个表的主键创建另一个具有外键的表时,会出现错误"表名称无效"



有一个带有" 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)
);

最新更新