そこで、「Name」、「Rollno」、「Result P/F」の 3 つの列を持つ「exam」というテーブルを作成しました。私はそれを次のようにしたい:
名前が (「&name」構文を介して) 入力されると、自動的に最初の名前にロール番号 (Rollno) 1501 が割り当てられ、「P」または「F」のいずれかのみを入力できる結果が求められます。それぞれ、合格または不合格です。次の名前を入力すると、Rollno が 1502 にインクリメントされます..というように続きます。
Rollnoの部分については、EXAMSQNというシーケンスがあります。次のようになります。
「Result P/F」の部分については、チェック制約をつけています。そして、これは私がテーブルに値を挿入する方法です:
insert into exam (name, rollno, "Result P/F")
values ('&name', examsqn.nextval, '&Result P/F')
ところで、これは私のチェック制約がどうなるかです:
1 alter table exam
2* add constraint exam_result_ck check ("Result P/F" in ('P','F'))
したがって、これに期待するのは、結果を要求するときに P または F のみを使用することです。
名前と結果を求められますが、その直後にエラーが発生します。これは、これがどのように進むかです:
Enter value for name: nikh
Enter value for result: P
old 2: values ('&name', examsqn.nextval, '&Result P/F')
new 2: values ('nikh', examsqn.nextval, 'P P/F')
insert into exam (name, rollno, "Result P/F")
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.EXAM_RESULT_CK) violated
よろしくお願いいたします。
ありがとうございました :)