使用外键约束创建 table 字段

Create table field with foreign key constraint

我想创建一个 table department:

COLUMN NAME   DATATYPE    SIZE   CONSTRAINT

dept_id       number      4      Primary key
prod_id       number      4      Foreign key

我试过这个:

CREATE TABLE Department(
dept_id number(4) primary key,
prod_id number(4) foreign key);

显示错误。如何向此 table 添加外键约束?

我假设另一个 table 被命名为 other_table_name 并且它包含一个名为 prod_id.

的主键
CREATE Department (
dept_id number(4) primary key,
prod_id number(4) REFERENCES other_table_name (prod_id)
);

或不同的语法

CREATE Department (
dept_id number(4) primary key,
prod_id number(4)

...
CONSTRAINT fk_prod_id
  FOREIGN KEY (prod_id)
  REFERENCES other_table_name (prod_id)
);

外键定义了您的 table 部门与 另一个具有主键的 table 部门之间的关系。这意味着,您不能在 DEPARTMENT 中创建一个 PROD_ID 为 1234 的行,除非在指定的 parent table 中有一个具有值的 pre-existing 行1234 作为它的主键.

那么你有这样一个现成的parenttable吗?如果是这样,您需要在外键定义中包含它的名称。否则你必须创建它。

假设 parent table 是产品:

create table product (
    prod_id number(4) primary key
    , name varchar2(32) not null 
);

然后你可以像这样用外键创建 DEPARTMENT:

CREATE TABLE Department(
    dept_id number(4) primary key,
    prod_id references PRODUCT );

是的,这就是您需要的所有语法:它会自动创建一个列 PROD_ID,其数据类型和精度与引用的 table 的主键列相同。可以使用更详细的语法。阅读 Oracle SQL 文档到 find out more