我想为我的学校项目创建一个数据库。创建了一些表时没有错误,但是当我想创建一个更复杂的表时,出现了此错误:
ORA-00907:缺少右括号
代码如下(表名和属性用罗马尼亚语表示):
CREATE TABLE Curse (
id_cursa int NOT NULL,
id_tura int NULL,
moment_inceput_cursa timestamp NULL,
moment_sfarsit_cursa timestamp NULL,
adresa_initiala text NULL,
GPS_punct_start text NULL,
adresa_destinatie text NULL,
destinatie_GPS text NULL,
stare_cursa char NOT NULL DEFAULT 0,
modalitate_plata int NULL,
pret decimal NULL,
CONSTRAINT Curse_pk PRIMARY KEY (id_cursa)
);
答案 0 :(得分:1)
实际的错误是DEFAULT子句位于NOT NULL子句之前。所以这是正确的语法:
stare_cursa char DEFAULT 0 NOT NULL
除此之外,您还需要将text
数据类型更改为varchar2(1000)
之类的数据或所需的长度。
答案 1 :(得分:0)
一些反对意见:
TEXT
数据类型无效;我使用了VARCHAR2(100)
;可能更大,或CLOB
DEFAULT 0 NOT NULL
(不是NOT NULL DEFAULT 0
)NULL
值SQL> CREATE TABLE curse(
2 id_cursa INT NOT NULL,
3 id_tura INT NULL,
4 moment_inceput_cursa TIMESTAMP NULL,
5 moment_sfarsit_cursa TIMESTAMP NULL,
6 adresa_initiala VARCHAR2(100)NULL,
7 gps_punct_start VARCHAR2(100)NULL,
8 adresa_destinatie VARCHAR2(100)NULL,
9 destinatie_gps VARCHAR2(100)NULL,
10 stare_cursa CHAR DEFAULT 0 NOT NULL,
11 modalitate_plata INT NULL,
12 pret DECIMAL,
13 CONSTRAINT curse_pk PRIMARY KEY(id_cursa)
14 );
Table created.
SQL>