這是一個非常初學者的問題,但我的谷歌技能失敗了,我似乎無法在筆記中找到任何東西。約束條件,我如何比較一個屬性的值與另一個?
在我的作業中,我必須根據教授給出的標準創建幾個約束條件。
我們有一個名爲Employee的表。員工有一個等級(char),該等級可以是'DB Guru','DB專家'或'DB新手'。他們也有薪水(整數)。我能夠輕鬆制定這個限制。
自帶之後,以確保任何與等級「DB大師」有上述200
我很困惑,我該怎麼檢查,看看是否爲等級的值是「工資約束DB大師「,並檢查薪水是否超過200.這是檢查排名的代碼,我似乎無法找到如何去做。
這是我到目前爲止已經試過:
IC2: The salary of a 'DB guru' is above 200.
*/
CONSTRAINT IC2 CHECK(rank IN('DB guru') AND salary > 200)),
這給我的錯誤: ORA-00922:在第14行 ERROR缺失或無效選項
第14行是Cconstraint我張貼,所以我猜這是一個語法錯誤。
有人能告訴我一個正確的語法來比較這些值的例子嗎?
非常感謝您的幫助。
編輯:這是整個創建語句,以及我在每個約束的嘗試。
-- 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))
);
+1對於實際嘗試做你的功課! :) – Miguel
哈哈沒有信譽沒有答案,對不對? – LemonFlip
你可以發佈你的整個創建/更改語句嗎?我懷疑),最後可能是一個語法錯誤。 – eaolson