约束条件 Oracle

Case on constraint Oracle

我们正在学习数据库,对于我们的案例,数据库是 Oracle,在 class 中,我们被要求根据 table 上另一个字段的信息创建约束,并且约束应该在内部构建一个案例,尽管进行了大量 google 搜索,但对我来说没有任何效果(我们在 apex Oracle 在线平台上工作),所以我们被要求做的是:

基于 acumuladoCompra 字段和 Clasification 字段执行以下操作:

如果 class化验是 A,则 acumuladocompra 必须少于 20,000 美元;如果 classification 是 E,则 acumuladocompra 应该在 $20,001 到 $40,000 之间;如果 classification 是 I,则 acumuladocompra 必须大于 $40,001 但小于 $60,000;如果 class化验为 O,则 acumuladocompra 必须少于 80,000 美元但多于 60,001 美元;否则它应该更高到 $100,000

那么,这是如何构建的?

编辑:我试过这段代码:

alter table "CLIENTES_152" add constraint "RESTRICCIONCLASIFICA" check ( CASE when CLASIFICACION_152 = A THEN ACUMULADOCOMPRA_152 <20000; 
when CLASIFICACION_152 = E THEN ACUMULADOCOMPRA_152 BETWEEN 20001 AND 40000;
when CLASIFICACION_152 = I THEN ACUMULADOCOMPRA_152 >40001 AND <60000;
when CLASIFICACION_152 = O THEN ACUMULADOCOMPRA_152 >60001 AND <80000;
when CLASIFICACION_152 = U THEN ACUMULADOCOMPRA_152 >100000; END) 

但是得到了

ORA-00905: missing keyword

怎么了?

感谢那些试图帮助我的人。

现在,此约束的最终解决方案是:

alter table "CLIENTES_152" add constraint "RESTRICCIONCLASIFICA" 
CHECK ( 
(CASE when CLASIFICACION_152 = 'A' AND ACUMULADOCOMPRA_152 <20000 THEN 1
when CLASIFICACION_152 = 'E' AND ACUMULADOCOMPRA_152 BETWEEN 20001 AND 40000 THEN 1
when CLASIFICACION_152 = 'I' AND ACUMULADOCOMPRA_152 BETWEEN 40001 AND 60000 THEN 1
when CLASIFICACION_152 = 'O' AND ACUMULADOCOMPRA_152 BETWEEN 60001 AND 80000 THEN 1
when CLASIFICACION_152 = 'U' AND ACUMULADOCOMPRA_152 >100000 THEN 1
ELSE 0 
END)=1
); 

正如你所看到的,我所做的是改变我写案例的方式,所以这是可以写的方式,最后效果很好。

感谢您的提示和建议。

注意:我还没有自己找到解决方案,有人告诉我必须构建查询的正确方法!