我有一個'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) –