我想创建一个表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);
它显示错误。如何向该表添加外键约束?
答案 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)
);