我有一张“学生”表和几个属性——其中两个在这个特定问题中很重要。我需要确保任何具有“初级”分类(年级)的学生的时间正好在 55 到 84 小时之间(学分)。
这是我迄今为止在 Oracle 中的声明方式(删除了不必要的代码):
CREATE TABLE Students (
id INTEGER,
name CHAR(10) NOT NULL,
classification CHAR(10) NOT NULL,
hours INTEGER,
gpa NUMBER(3,2) NOT NULL,
mentor INTEGER,
-- IC4:
-- To be classified as a 'junior', a student must have
-- completed between 55 and 84 hours (inclusive).
CONSTRAINT IC4 CHECK (classification != 'junior' AND (hours < 55 AND hours > 84))),
);
甲骨文抛出错误:
第 23 行的错误: ORA-00922: 缺少或无效选项
我确定我没有正确格式化约束,但是我的教授花了大约 3 秒钟的时间来声明并告诉我们自己弄清楚。我知道 1 属性约束,但我不知道如何同时混合和匹配 2 个属性。有人可以帮我吗?
*基本上在任何其他代码中,它看起来像嵌套的 if 语句:
if (classification == "junior") {
if (hours < 55 && hours > 84)
throwSomeError("Foolish!");
}
我似乎无法将其转换为 SQL。如果这该死的东西中的间距很奇怪,我很抱歉,我无法将其格式化以挽救我的生命。