在oracle数据库中创建表时,它显示正确的括号丢失错误

时间:2018-10-03 05:23:22

标签: oracle foreign-keys ddl

在oracle数据库中创建表时,它显示右括号缺少错误

CREATE TABLE Catalog(
sid VARCHAR2(50) FOREIGN KEY REFERENCES Suppliers(sid),
pid VARCHAR2(50) FOREIGN KEY REFERENCES Parts(pid),
quantity VARCHAR2(50)
);

2 个答案:

答案 0 :(得分:2)

您需要将<button> (click)="scrolltop()" routerLink="/your link"</button> 部分删除为:

FOREIGN KEY

或者您可以创建为:

CREATE TABLE Catalog(
sid VARCHAR2(50) REFERENCES Suppliers(sid),
pid VARCHAR2(50) REFERENCES Parts(pid),
quantity VARCHAR2(50)
);

通过定义CREATE TABLE Catalog ( sid VARCHAR2(50), pid VARCHAR2(50), quantity VARCHAR2(50), CONSTRAINT fk_supplier FOREIGN KEY (sid) REFERENCES suppliers(sid), CONSTRAINT fk_parts FOREIGN KEY (pid) REFERENCES parts(pid) ); '的名字

或者如果表已经在以前创建过,则可以通过以下方式在以后添加约束:

FOREIGN CONSTRAINTS

答案 1 :(得分:0)

约束语法为documented here

inline_constraint :: = inline_constraint

out_of_line_constraint :: = out_of_line_constraint

references_clause :: = enter image description here

您的示例为内联,因为它们是列定义的一部分,而不是单独的部分或语句中的内容。

我将其写为:

create table catalog
( sid       references suppliers(sid)
, pid       references parts(pid)
, quantity  varchar2(50) );

或者如果我想明确命名它们:

create table catalog
( sid       constraint cat_supplier_fk references suppliers(sid)
, pid       constraint cat_part_fk references parts(pid)
, quantity  varchar2(50) );

您可以根据需要显式覆盖默认数据类型,但是我认为允许它从父级继承是更好的做法。 (您只能使用内联约束来执行此操作。)