【问题标题】:SQL: Check constraints syntax errors?SQL:检查约束语法错误?
【发布时间】:2016-11-03 17:59:13
【问题描述】:

我正在尝试向我的一个列添加约束,但是我收到此错误消息“missing right parenthesis”。我不是第一次收到此消息,但是我对 SQL 还很陌生,所以我的语法不是标准的。

CREATE TABLE FAGFELT
(
bok varchar (255) PRIMARY KEY,
felt varchar (255) 
CREATE CONSTRAINT chk_felt CHECK (felt IN("databaser", "programmering", "matematikk", "statistikk", "kjemi", "fysikk"))
);

【问题讨论】:

  • ADD 用于ALTERCREATE 不需要它。在此处查看示例:docs.oracle.com/javadb/10.8.3.0/ref/…
  • 注意,谢谢!我将编辑我的帖子。仍然收到我缺少右括号的错误消息。
  • 字符串由单引号而不是双引号分隔。因此,假设您打算将其作为字符串文字,则“数据库”应该是“数据库”。我怀疑你想创建一个外线约束,所以你想在varchar(255) 之后有一个逗号,并从create constraint 中删除create
  • 您在所有方面都绝对正确。已解决,谢谢!
  • @PM77-1 - 您的链接实际上是指向 JavaDB(Oracle Corp 拥有的另一个数据库)的文档,而不是 Oracle 文档。它可能相似但不完全相同。

标签: sql oracle ddl check-constraint


【解决方案1】:

create constraint 错误,字符串常量需要用单引号' 提供。双引号" 用于标识符

CREATE TABLE FAGFELT
(
   bok varchar (255) PRIMARY KEY,
   felt varchar (255), --<< you need a comma here
   CONSTRAINT chk_felt 
       CHECK (felt IN('databaser', 'programmering', 'matematikk', 'statistikk', 'kjemi', 'fysikk'))
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多