然后用CASE添加约束

时间:2017-09-22 11:35:39

标签: sql constraints case

我是SQL领域的初学者,目前正在开发自己的项目。 我试图在列上添加约束以帮助我显示不同(2)个案例的不同值。 我的专栏如下:

DATA    DATE    
NR_SLIDE    NUMBER  
TOTAL   NUMBER  
NR_ZILE NUMBER  
ID_C    NUMBER  
ID_F    NUMBER  
COST_SLIDE  NUMBER  

基本上我需要显示总数有两个选项: 1.当nr_slide> 10时我需要打折5 2.当nr_slide <= 10时,没有折扣。

我的代码尝试(最后一个)看起来像这样:

ALTER Table Factura f
add CONSTRAINT ck_total CHECK (
    CASE 
        WHEN nr_slide>10  
            THEN total=(nr_slide*cost_slide*nr_zile-5) 

            ELSE total=(nr_slide*cost_slide*nr_zile) 

    END = nr_slide);   

我收到的消息是:

  

ORA-01735:ALTER TABLE选项无效

你能帮我解决这个问题吗?可能有一些我以前没有定义过的东西? 谢谢!

1 个答案:

答案 0 :(得分:1)

我想你想要:

ALTER Table Factura f 
    ADD CONSTRAINT ck_total
        CHECK ( (nr_slide > 10 AND nr_slide = nr_slidecost_slidenr_zile - 5) OR
                (nr_slide <= 10 AND nr_slide = nr_slide* cost_slide * nr_zile)
              );

您可能还需要考虑NULL个值。