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

时间:2019-02-23 15:41:41

标签: database oracle oracle10g

有一个名为“ 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

我尝试多次,方法是删除并再次创建父表,但是没有用。

2 个答案:

答案 0 :(得分:0)

删除TO。它必须是:

FOREIGN KEY (SSN) REFERENCES SALESPERSON123(SSN),

代替

FOREIGN KEY (SSN) REFERENCES TO SALESPERSON123(SSN),

答案 1 :(得分:-2)

外键是一种在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)

);