我遇到了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));
答案 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
);
答案 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
。)