在toad中查询oracle db时出错

时间:2014-09-10 12:38:44

标签: oracle toad

我在toad中执行了以下查询:

CREATE TABLE ACTWEB.usuarios
(
  id             INTEGER  NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
  matricula      INTEGER,
  nome           CHAR(50) NOT NULL,
  senha          CHAR(50),
  nivel          INTEGER,
  maleta         INTEGER,
  email          CHAR(50),
  acessos        INTEGER,
  datacriacao    DATE,
  dataalteracao  DATE
  UNIQUE (id)
)

LOGGING 
NOCOMPRESS 
NOCACHE
NOPARALLEL;

得到了这条ORA消息:

  

ORA-00907缺少右括号
  原因:输入的左括号没有右括号,或者括号中包含额外信息。所有括号必须成对输入   操作:更正语法并重试该语句。

2 个答案:

答案 0 :(得分:0)

您的语法中有一些错误。 NOT NULL必须在IDENTITY子句之后发生。必须在没有,的情况下指定范围,并且UNIQUE关键字必须直接显示在列中:

CREATE TABLE ACTWEB.usuarios
(
  id             INTEGER  GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1) NOT NULL UNIQUE,
  matricula      INTEGER,
  nome           CHAR(50) NOT NULL,
  senha          CHAR(50),
  nivel          INTEGER,
  maleta         INTEGER,
  email          CHAR(50),
  acessos        INTEGER,
  datacriacao    DATE,
  dataalteracao  DATE
)
LOGGING NOCOMPRESS NOCACHE NOPARALLEL;

答案 1 :(得分:0)

您指定unique不正确,要解决此问题,您有几种方法:

首先,明确创建唯一键:

create table tab1(
 id number(10),
 CONSTRAINT id_uk UNIQUE (id)
)

其次,创建唯一键作为列的选项:

create table tab1(
 id number(10) UNIQUE
)

第三,使用alter table添加唯一键约束:

create table tab1(
 id number(10)
);
alter table tab1 add constraint id_uk unique(id);

Forth,通过创建唯一索引隐式创建唯一键:

create table tab1(
 id number(10)
);
CREATE UNIQUE INDEX id_uk ON tab1 (id);