sql - oracle检查regexp_like

标签 sql oracle10g oracle-xe

嘿,

我试图在oracle中使用REGEXP_LIKE进行约束,但我不断收到ORA-00920:无效的关系运算符

错误,这是我的代码(错误位于 ck_files_name 约束的末尾

CREATE TABLE files(
  idFile INT PRIMARY KEY,
  idParent INT REFERENCES files,
  name VARCHAR2(256),
  type CHAR(1),

  CONSTRAINT ck_files_name  CHECK REGEXP_LIKE(name, '[^\.]'),    -- error ORA-00920:    invalid relational operator
  CONSTRAINT ck_files_type  CHECK type IN ('d', 'f'),
  CONSTRAINT ck_files_idFile_idParent CHECK (idFile <> idParent),
  CONSTRAINT uq_files_idFile_name UNIQUE (idParent, name)
);

我做错了什么,还是与我的oracle版本(oracle 10g xe)有关?

最佳答案

您必须在 check 关键字后面加上括号。

以下内容至少适用于 Oracle 11g、R2。

CREATE TABLE files(
  idFile INT PRIMARY KEY,
  idParent INT REFERENCES files,
  name VARCHAR2(256),
  type CHAR(1),
  CONSTRAINT ck_files_name  CHECK (REGEXP_LIKE(name, '[^\.]')),
  CONSTRAINT ck_files_type  CHECK (type IN ('d', 'f')),
  CONSTRAINT ck_files_idFile_idParent CHECK (idFile <> idParent),
  CONSTRAINT uq_files_idFile_name UNIQUE (idParent, name)
);

关于sql - oracle检查regexp_like,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4631399/

相关文章:

sql - 将 Oracle DATE 列迁移到带时区的 TIMESTAMP

oracle - 如何运行oracle企业管理器?

Oracle 11g XE - 突然出现 ORA-01034 : ORACLE not available and ORA-27101: shared memory realm does not exist

oracle - 全新安装 Oracle Express 后的默认用户名是什么?

php - 错误 310 (net::ERR_TOO_MANY_REDIRECTS):重定向太多。使用 PHP

php - MySQL Group By Product Id 但不是有序列号的产品

sql - 将 Oracle 序列重置为现有列中的下一个值的最佳方法?

oracle - 什么是使用oracle数据库空间? ("ORA-12953: ... exceeds the maximum allowed database size")

sql - 如何在没有完整外连接的情况下进行完整外连接

sql - monetdb:导出查询结果