2

そこで、「Name」、「Rollno」、「Result P/F」の 3 つの列を持つ「exam」というテーブルを作成しました。私はそれを次のようにしたい:

名前が (「&name」構文を介して) 入力されると、自動的に最初の名前にロール番号 (Rollno) 1501 が割り当てられ、「P」または「F」のいずれかのみを入力できる結果が求められます。それぞれ、合格または不合格です。次の名前を入力すると、Rollno が 1502 にインクリメントされます..というように続きます。

Rollnoの部分については、EXAMSQNというシーケンスがあります。次のようになります。 最初の1つ

「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

よろしくお願いいたします。

ありがとうございました :)

4

2 に答える 2