【问题标题】:Oracle: invalid relational operator when creating a table with check constraintOracle:创建具有检查约束的表时,关系运算符无效
【发布时间】:2015-03-24 17:06:07
【问题描述】:

我正在尝试使用 oracle 创建一个表,但我一次又一次地收到相同的错误

第 4 行出现错误: ORA-00920: 无效的关系运算符

这是我的一段代码:

    CREATE TABLE Joueur(
    pseudo VARCHAR(50) PRIMARY KEY,
    nome VARCHAR(255) REFERENCES Equipe(nome),
    nomj VARCHAR(50) CHECK (UPPER(SUBSTR(nomj, 1, 1))),
    dateNaissance DATE CHECK (to_char(dateNaissance,"YYYY/MM/DD") > '1984/01/08'), 
);

感谢您的宝贵时间

【问题讨论】:

  • Equipe 桌子在哪里?你也可以发一下吗?

标签: sql oracle


【解决方案1】:

第四行没有比较:

nomj VARCHAR(50) CHECK (UPPER(SUBSTR(nomj, 1, 1))),
-------------------------------------------------^

您要检查什么?

另外,我会把最后一个写成

dateNaissance DATE CHECK (dateNaissance > date '1984-01-08')

转换为字符串不会导致错误,但完全没有必要。

而且最后的逗号也是错误的。

编辑:

第一次比较:

nomj VARCHAR(50) CHECK (SUBSTR(nomj, 1, 1) BETWEEN 'A' AND 'Z'),

Oracle 比较通常区分大小写。

【讨论】:

  • 感谢它现在与日期字段的中间和更改完美配合
猜你喜欢
  • 2017-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多