嘿,
我试图在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/