Sql oracle列多重检查枚举
如何在oracle表中添加多列表列Sql oracle列多重检查枚举,sql,oracle,create-table,check-constraints,Sql,Oracle,Create Table,Check Constraints,如何在oracle表中添加多列表列 像这样 CREATE TABLE atable ( col1 varchar2(10) CONSTRAINT cons_atable_col1 CHECK (col1 IN ('a','b')) col2 varchar2(10) case col1 WHEN 'a' THEN CONSTRAINT cons_atable_col2 CHECK (col2 IN ('c','d')) WHEN 'b' THEN
像这样
CREATE TABLE atable (
col1 varchar2(10) CONSTRAINT cons_atable_col1 CHECK (col1 IN ('a','b'))
col2 varchar2(10) case col1
WHEN 'a' THEN
CONSTRAINT cons_atable_col2 CHECK (col2 IN ('c','d'))
WHEN 'b' THEN
CONSTRAINT cons_atable_col2 CHECK (col2 IN ('e','f'))
ELSE
null
end
);
您可以使用布尔逻辑而不是
大小写
表达式来描述约束
我认为这实现了您想要的逻辑:
CREATE TABLE atable (
col1 varchar2(10),
col2 varchar2(10),
CHECK ( (col1 = 'a' AND col2 IN ('c','d')) OR (col1 = 'b' AND col2 IN ('e','f')) )
);
我们还可以将检查约束表示为:
CHECK ((col1, col2) IN (('a', 'b'), ('a', 'd'), ('b', 'e'), ('b', 'f')))
如果您只允许使用1个字符,那么为什么大小为10?@15825; 1604; 1583;ب1588; 1610; qi:我看不出您的评论与您的问题有什么关系。您对我发布的代码有问题吗?