[英]oracle check regexp_like
嗨,
我試圖在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 11 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)
);
缺少了寄生。 嘗試這個:
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)
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.