我有一个'Student'表和几个属性 - 其中两个对于这个特定问题很重要。我需要确保任何分类(年级)为'初级'的学生在55到84小时(学分)之间。Oracle 2属性CHECK约束问题
这里是我到目前为止在甲骨文(删除不必要的代码)的声明明智:
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))),
);
甲骨文引发错误:
ERROR at line 23: ORA-00922: missing or invalid option
我相信,我有没有格式化这个限制是正确的,但是我的教授花了大约3秒钟的时间申报,并告诉我们自己弄明白。我知道1属性约束,但我不知道如何同时混合和匹配2个属性。有人可以帮我吗?
*基本上在任何其他代码会看起来像嵌套的if语句:
if (classification == "junior") {
if (hours < 55 && hours > 84)
throwSomeError("Foolish!");
}
我只是似乎无法翻译成SQL。我很抱歉,如果这件事情的间隔是奇怪的,我不能得到它来保存我的生活格式。
小时如何小于55且大于84? – sgeddes
@sgeddes可能是一个答案;) – bonCodigo
这看起来像[本]的副本(http://stackoverflow.com/questions/14669174/oracle-check-integrity-constraint/14669589#14669589) –