小编use*_*871的帖子

在检查约束中使用case语句

我上周一直在学习SQL,但我不确定如何在检查约束中正确添加case语句.任何人都可以给我任何指示吗?

我有以下成绩表:

CREATE TABLE Grade
(
    salary_grade    char(1) NOT NULL CHECK (salary_grade = UPPER(salary_grade)),
        CONSTRAINT ck_grade_scale CHECK(
        CASE 
            WHEN salary_grade = '[A-D]' 
                THEN salary_scale = 'S1'
            WHEN salary_grade = '[D-G]' 
                THEN salary_scale = 'S2'
        END)

        salary_scale    char(2) DEFAULT 'S1' NOT NULL,

        CONSTRAINT pk_grade PRIMARY KEY (salary_grade),
        CONSTRAINT ck_salary_grade CHECK (REGEXP_LIKE(salary_grade, '[A-G]', 'c')),
        --constraint must be either S1 or S2
        CONSTRAINT ck_salary_scale CHECK (salary_scale IN ('S1', 'S2'))
);
Run Code Online (Sandbox Code Playgroud)

我想检查一下,如果salary_grade它在AD之间那么salary_scale必须是'S1'或者如果salary_grade它在EG之间那么它是'S2'.

我试图研究这个并提出后者但是它不起作用..我是否正确构造了代码?

sql oracle check-constraints oracle11g

3
推荐指数
2
解决办法
7057
查看次数

标签 统计

check-constraints ×1

oracle ×1

oracle11g ×1

sql ×1