Sql 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

如何在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
          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:我看不出您的评论与您的问题有什么关系。您对我发布的代码有问题吗?