创建具有外键约束的表字段

时间:2019-07-12 16:03:49

标签: oracle foreign-keys relational-database

我想创建一个表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);

它显示错误。如何向该表添加外键约束?

2 个答案:

答案 0 :(得分:2)

外键使用主键定义表DEPARTMENT和另一个表之间的关系。这意味着,您不能在DEPARTMENT中创建PROD_ID为1234的行,除非指定的父表中已有一个以1234作为其主键的行

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

假设父表是PRODUCT:

Attachments.Add(GetAttachment(attachmentFileName).GetAwaiter().GetResult());

然后,您可以使用如下外键创建DEPARTMENT:

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

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

答案 1 :(得分:0)

我假设另一个表名为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)
);