【问题标题】:Missing right parenthesis at create table创建表时缺少右括号
【发布时间】:2020-02-07 06:43:41
【问题描述】:

我正在尝试使用 SQL 脚本创建一个基本表 (Diak),但它一直在第一行显示 ORA-00907。

但是,我创建了另一个具有基本相同结构的表(Targy),并且创建得很好。

create table Diak (
  Diak_id rowid constraint pk_diak primary key,
  Nev varchar2(100),
  Szul_datum date szul_70_tol constraint check (Szul_datum>= date'1970-1-1'),
  Cim long,
  Kod varchar2(100) constraint uk_diak_kod unique,
  Kezdes_eve number(4) constraint kezdes_88_tol check (Kezdes_eve>= 1988),
  );

create table Targy (
  Targy_id rowid constraint pk_targy primary key ,
  Nev long,
  Kod varchar2(100) constraint uk_targy_kod unique,
  Eloado varchar2(100) default 'Bármi Áron',
  Napok varchar2(100),
  Hely varchar2(100)
  );  

它说“从第 1 行开始的错误 [...] 00907. 00000 - “缺少右括号”“。 由于 Targy 表很好,我不知道 Diak 表有什么问题。

【问题讨论】:

  • 这就是为什么我把逗号放在左边。

标签: oracle ddl create-table ora-00907


【解决方案1】:
(Kezdes_eve>= 1988), 

去掉那个逗号,你就可以开始了。

【讨论】:

  • 删除需要的逗号,但不足以让错误消失:dbfiddle here
【解决方案2】:

您没有正确声明CHECK 约束;只需删除 xxxxx CONSTRAINT 部分就可以了:

create table Diak (
  Diak_id rowid constraint pk_diak primary key,
  Nev varchar2(100),
  Szul_datum date check (Szul_datum>= date'1970-1-1'),
  Cim long,
  Kod varchar2(100) constraint uk_diak_kod unique,
  Kezdes_eve number(4) check (Kezdes_eve>= 1988)
);

Demo on DB Fiddle.

注意:最后一列的声明末尾还有一个逗号,但我认为这是一个错字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多