助け合いフォーラム

Oracle DB

Oracle Master Bronze DBA 2019(1Z0-085)
問題ID : 29826
問題を開く
CUSTOMERS表の構造を確認してください。 次のSQL文を実行するとどうなりますか。  CREATE TABLE order1  (order_id NUMBER(8) CONSTRAINT ord_pk PRIMARY KEY,   prod_id NUMBER(4) CONSTRAINT prod_nn NOT NULL,   order_date DATE...

この問題はプレミアムコンテンツです。

上に戻る

問題、選択肢、回答の訂正

投稿日 2023/05/03

CUSTOMERS表のcustomer_idに
一意キー制約もしくは主キー制約がないため、
解答にある
・列レベルではFOREIGN KEYキーワードを指定できないので、エラーとなる
は誤りであると考える。

2023/05/14 22:32

間違っていたらすみませんが、一意キー制約もしくは主キー制約があろうがなかろうがそもそもの構文が適切ではないので、選択肢の中にあるこちらが正答になっているのではないでしょうか。試してみたのをのせます。
主キー制約設定有り、「FOREIGN KEY」を29826の形で指定した場合。

CREATE TABLE customers
(customer_id NUMBER(4) CONSTRAINT cust_pk PRIMARY KEY);

CREATE TABLE order
(customer_id NUMBER(4) CONSTRAINT cust_fk FOREIGN KEY REFERENCES customers(customer_id));
                          *
行2でエラーが発生しました。:
ORA-02253: ここでは制約は指定できません。

解説と同様のエラーが表示されました。
解説にある通りFOREIGN KEYを抜いたり「(customer_id NUMBER(4), CONSTRAINT cust_fk FOREIGN KEY (customer_id) REFERENCES customers(customer_id));」に変更した場合はエラーが表示されずにテーブルを作成できました。

ちなみに一意キー制約もしくは主キー制約無し、「FOREIGN KEY」を正しく指定した場合。

CREATE TABLE customers
(customer_id NUMBER(4));

CREATE TABLE order
(customer_id NUMBER(4), CONSTRAINT cust_fk FOREIGN KEY (customer_id) REFERENCES customers(customer_id));
            *
行2でエラーが発生しました。:
ORA-02270: この列リストに対して一致する一意キーまたは主キーが存在しません。

こちらのエラーが表示されました。


コメント

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?