这是一个非常初学者的问题,但我的谷歌技能让我失望了,我似乎在我的笔记中找不到任何东西。
在我的作业中,我必须根据教授给出的标准创建几个约束条件。
我们有一个名为 Employee 的表。员工有一个等级(字符),该等级可以是“DB Guru”、“DB 专家”或“DB rookie”。他们也有薪水(整数)。这个约束我很容易做到。
随之而来的限制是确保任何具有“DB guru”级别的人的薪水高于 200。
我很困惑如何检查 rank 的值是否为“DB guru”,并检查薪水是否高于 200。这是检查排名的代码,我似乎无法找到如何做。
这是我迄今为止尝试过的:
IC2: The salary of a 'DB guru' is above 200.
*/
CONSTRAINT IC2 CHECK(rank IN('DB guru') AND salary > 200)),
这给了我错误:第 14 行的错误:ORA-00922:缺少或无效选项
第 14 行是我发布的 Cconstraint,所以我猜这是一个语法错误。
有人可以向我展示一个比较这些值的正确语法示例吗?
提前谢谢你的帮助。
编辑:这是整个 Create 语句,以及我对每个约束的尝试。
-- IMPORTANT: use the names IC1, IC2, etc. as given below.
-- --------------------------------------------------------------------
DROP TABLE Employee CASCADE CONSTRAINTS;
DROP TABLE Dependent CASCADE CONSTRAINTS;
--
CREATE TABLE Employee
(
id INTEGER PRIMARY KEY,
name CHAR(10) NOT NULL,
rank CHAR(10) NOT NULL,
salary INTEGER NOT NULL,
/*
IC1: The rank is one of: 'DB guru', 'DB expert', or 'DB rookie'
*/
COnstraing IC1 CHECK(rank IN('DB guru', 'DB expert', 'DB rookie')),
IC2: The salary of a 'DB guru' is above 200.
*/
CONSTRAINT IC2 CHECK(rank IN('DB guru') AND salary > 200)),
/*
IC3: The salary of a 'DB expert' is between 80 and 220 (inclusive).
*/
CONSTRAINT IC3 CHECK(rank IN('DB expert) AND salary >= 80 AND salary <= 220),
/*
IC4: The salary of a 'DB rookie' is less than 100.
*/
CONSTRAINT IC4 CHECK(rank IN('DB rookie') AND salary < 100))
);