これは非常に初歩的な質問ですが、Google のスキルが足りず、メモに何も見つからないようです。
私の課題では、教授から与えられた基準に基づいて、いくつかの制約を作成する必要があります。
Employee というテーブルがあります。従業員にはランク (文字) があり、そのランクは「DB Guru」、「DB エキスパート」、または「DB 新人」のいずれかです。また、給与 (整数) もあります。この制約は簡単に作成できました。
後に続く制約は、ランク「DB グル」を持つ人の給与が 200 を超えていることを確認することです。
ランクの値が '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))
);