【问题标题】:ORA-00907: missing right parenthesis SQL DeveloperORA-00907: 缺少右括号 SQL Developer
【发布时间】:2018-05-23 05:01:58
【问题描述】:

我需要知道为什么在这部分代码中出现括号错误。

CREATE TABLE CIUDAD(
COD_CIUDAD NUMBER(3) CONSTRAINT CIUDAD_PK PRIMARY KEY (COD_CIUDAD),
NOMBRE VARCHAR2(20) CONSTRAINT NOTNULL_NOMBRE NOT NULL,
NOMBRE_REGION VARCHAR(20) CONSTRAINT NOTNULL_NOMBRE_REGION NOT NULL
);

【问题讨论】:

  • 我回滚了您上次的编辑并恢复了原始问题。得到答案后,请勿将问题更改为其他问题。

标签: sql oracle ddl ora-00907


【解决方案1】:

当使用PRIMARY KEY (COD_CIUDAD)语法时,约束必须与列分开定义或删除(COD_CIUDAD)

您应该使用以下查询:

CREATE TABLE CIUDAD(
COD_CIUDAD NUMBER(3) ,
NOMBRE VARCHAR2(20)  CONSTRAINT NOTNULL_NOMBRE NOT NULL,
NOMBRE_REGION VARCHAR(20)  CONSTRAINT NOTNULL_NOMBRE_REGION NOT NULL,
CONSTRAINT CIUDAD_PK PRIMARY KEY (COD_CIUDAD)
);

您也可以忽略命名NOT NULL 约束:

CREATE TABLE CIUDAD(
COD_CIUDAD NUMBER(3) ,
NOMBRE VARCHAR2(20)  NOT NULL,
NOMBRE_REGION VARCHAR(20)  NOT NULL,
CONSTRAINT CIUDAD_PK PRIMARY KEY (COD_CIUDAD)
);

参考文献:

【讨论】:

  • @Derezed 我在您提出的与此问题相关的问题中发布了答案。我正在等待您的回复
【解决方案2】:

当您使用内联约束时,PRIMARY KEY 会自动引用正在声明的列。因此,(COD_CIUDAD) 不被接受。

试试这个:

CREATE TABLE CIUDAD (
    COD_CIUDAD NUMBER(3) CONSTRAINT CIUDAD_PK PRIMARY KEY,
    NOMBRE VARCHAR2(20) CONSTRAINT NOTNULL_NOMBRE NOT NULL,
    NOMBRE_REGION VARCHAR2(20) CONSTRAINT NOTNULL_NOMBRE_REGION NOT NULL
);

我将NOMBRE_REGION的类型改为VARCHAR2()。

【讨论】:

  • 好答案,我投了赞成票,但NOMBRE_REGION 的类型已经是VARCHAR2,不是吗?
  • @Derezed 如果这个答案解决了你的问题,你必须接受它,只需点击投票箭头下方的标记。欢迎访问Tour page 了解更多信息
  • 我还有一个问题
  • @Derezed 。 . .新问题应作为新问题提出,而不是通过编辑已回答的问题或在 cmets 中提出。
猜你喜欢
  • 2016-02-20
  • 2016-10-23
  • 2017-03-11
  • 1970-01-01
  • 1970-01-01
  • 2018-05-23
  • 2018-12-06
相关资源
最近更新 更多