为什么我收到错误'无效的表名',当我尝试使用第一个表的primray键创建另一个带有外键的表时

问题描述 投票:0回答:2

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

我尝试了多次,通过删除并再次创建父表,但没有没有用。

database oracle oracle10g
2个回答
0
投票

删除TO。肯定是:

FOREIGN KEY (SSN) REFERENCES SALESPERSON123(SSN),

代替

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

-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)

);
© www.soinside.com 2019 - 2024. All rights reserved.