SQL错误:第1行ORA-00907中缺少右括号

时间:2014-11-03 01:57:17

标签: sql oracle sqlplus create-table

我检查了其他类似的问题。关于重复逗号,命令错误但无法在我的错误中找到任何错误。我还搜索了创建表的示例以与我的进行比较,但未找到任何区别:(。

以下是CREATE表语句:

CREATE TABLE DRIVER(L# VARCHAR(15) NOT NULL
                       , DNAME VARCHAR(75) NOT NULL
                       , STATUS  VARCHAR(50) NOT NULL
                       , NRIC VARCHAR (15) NOT NULL
                       , PRIMARY KEY(L#)
                       , CANDIDATE KEY(NRIC)
      );

任何人都可以帮我指出我无法看到或遗漏的东西,谢谢(:

3 个答案:

答案 0 :(得分:2)

您无法在Oracle中指定CANDIDATE KEY。正确的方法是在候选密钥上创建UNIQUE CONSTRAINT

喜欢这样。

这是一个有效的SQLFiddle:http://sqlfiddle.com/#!4/b392d/1

CREATE TABLE DRIVER(
    L# VARCHAR(15) NOT NULL, 
    DNAME VARCHAR(75) NOT NULL, 
    STATUS VARCHAR(50) NOT NULL, 
    NRIC VARCHAR (15) NOT NULL, 
  PRIMARY KEY(L#),
    CONSTRAINT UK_NRIC UNIQUE (NRIC)
);

答案 1 :(得分:0)

ORA-00907几乎总是表示语法错误。当解析器找到一个不是关键字的单词时,它会发生关键字或右手括号以关闭当前语句(因此Missing Right Parenthesis)。虽然有时我们可以拥有一个无与伦比的左手支架:一个体面的文本编辑器可以帮助追踪它。

在你的情况下,闯入的词是CANDIDATE。对于初学者来说,语法错误可能很棘手。我建议你熟悉Oracle文档:它是在线的,完整的和免费的,并且有很多例子。 Check it outlist of reserved words可能对您有所帮助,因为CANDIDATE不在其中,这是一个很大的线索。

答案 2 :(得分:-1)

如果要在名称中使用奇数字符,请将其包装在方括号中。 []