我一直在学习上周的SQL,但我不确定如何在检查约束中正确添加case语句。任何人都可以给我任何指示?在检查约束中使用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'))
);
我要检查,如果salary_grade
为A-d之间,则salary_scale
必须是“S1”,或者如果salary_grade
为E-G之间那么它的“S2”。
我试图研究这一点,并拿出后者,但是它不工作..我有正确的代码结构?
你得到一些错误?如果是这样,请更新您的问题,这可能有助于发现问题。 – 2015-01-26 20:38:15
@Hugo Sousa我在试图放弃时失去了一个右括号。还说这个表格不存在 – user3414871 2015-01-26 20:52:11
我真的很陌生,几个星期前才开始学习,所以请耐心等待 – user3414871 2015-01-26 20:52:54