SQL:ORA-00906:缺少左括号

时间:2019-05-12 14:42:10

标签: sql oracle

我遇到了CREATE TABLE的问题:

这是我的指示:

CREATE TABLE PRATICIEN (
num_pra INTEGER PRIMARY KEY,
nom_pra VARCHAR(30) NOT NULL,
FOREIGN KEY code_etage REFERENCES ETAGE(code_etage));
  

ORA-00906:缺少左括号00906。00000-“缺少左括号”

ETAGE存在,并且该表的创建没有错误:

CREATE TABLE ETAGE (
code_etage SMALLINT PRIMARY KEY,
designation VARCHAR(30));

3 个答案:

答案 0 :(得分:3)

您需要在外键引用周围加上括号。语法就是这样定义的。

您还需要声明该列。 FOREIGN KEY是列的属性,而不是列定义:

CREATE TABLE PRATICIEN (
    num_pra INTEGER PRIMARY KEY,
    nom_pra VARCHAR(30) NOT NULL,
    code_etage SMALLINT,
    FOREIGN KEY (code_etage) REFERENCES ETAGE(code_etage)
);

Here是db <>小提琴。

答案 1 :(得分:2)

您只需删除FOREIGN KEY关键字:

CREATE TABLE PRATICIEN (
    num_pra INTEGER PRIMARY KEY,
    nom_pra VARCHAR(30) NOT NULL,
    code_etage REFERENCES ETAGE(code_etage)  -- please note that type is inferred
);

db<>fiddle demo

答案 2 :(得分:1)

最简单的方法是

create table praticien
( num_pra    integer primary key
, nom_pra    varchar2(30) not null
, code_etage references etage );

但是,在ETAGE具有多个唯一约束的情况下,指定引用的列可能被视为最佳做法:

create table praticien
( num_pra    integer primary key
, nom_pra    varchar2(30) not null
, code_etage references etage(code_etage) );

(顺便说一下,请注意,它在Oracle中是varchar2,而不是varchar。)