問題ID: 19932

  • フォーラムは新サイトへ移行しました。
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2015-9-19 22:33
hide0129  新米   投稿数: 2
INSERT INTO prod2
 VALUES (1, (SELECT name FROM prod WHERE prodid = 1),
  (SELECT category FROM prod WHERE prodid = 1), SYSDATE, NULL);

副問合せが複数行を返すためエラーとなる
正常に実行される

→この問題prodidにNOT NULL制約が記載されていますが、PRIMARY KEY制約は記載されていないため、prodid = 1が複数あった場合には副問い合わせが複数行を返すためエラーとなりませんか?
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2015-9-20 23:59
quensan  長老   投稿数: 119
>この問題prodidにNOT NULL制約が記載されていますが、PRIMARY KEY制約は記載されていないため、

問題のPROD表の構造はDESCRIBEコマンドの出力結果と思われます(実試験でも表の構造はそうだったような)。
なのでNOT NULLしか明記されてないですが、問題集用のsetup.sql(12c問題集のTopからダウンロードできるSQL文)のCREATE文ではPROD表のprodidにPRIMARY KEYは定義されていました。

SQL文流して確認してみました。

SQL> desc prod
名前 NULL? 型
----------------------------------------- -------- -----------

PRODID NOT NULL NUMBER(2)
NAME VARCHAR2(20)
CATEGORY NUMBER(2)
STARTDATE DATE
ENDDATE DATE

SQL> select constraint_type from user_constraints where table_name = 'PROD';

C
-
P

でも確かに、問題からはprodidが一意であるとは判断できませんね。条件として明記してほしいです。
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2015-9-21 21:32
staff_meg  長老   投稿数: 427
hide0129さん
quensanさん

ご指摘の点を修正致しました。
ご報告、誠にありがとうございました。

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.