rink_rewさんの投稿一覧
実務として考えると、一部、他の状態でもできることがあるかもしれませんが、「必要な情報が得られている状態でなければその操作ができない」、「修正、再作成などの操作は対象のファイルが使用中でない状態である必要がある」が基本的な考え方になるのかなと思います。
例えば、一般ユーザがデータベースにアクセスしてselectなどの操作を行うためには、データファイルが読み込まれてデータベースがOPENの状態でなければならないですし、データファイルやREDOログファイルの名前を変更したければ、これらのファイルの場所が格納されている制御ファイルが読み込まれていなければならない(mount状態まで到達していなければならない)ですし、制御ファイルを再作成したければ制御ファイルが読み込まれていない状態でなければならない(再作成したいシチュエーションは、おそらく制御ファイルが破損してしまっていてmountまで進めない、などでしょうけど)といったことが言えるかと思います。
Bronze DBA試験の対策としては、この問題で解説されている通りの理解で問題無いように思います。
問題や解説の内容はとても基本的なことだとは思うので、覚えて損は全くないと思いますが、ピンポイントに1Z0-085の内容だけにしぼられているのか?というとそうでもないような感はありますね。
「大は小を兼ねる」じゃないですが、少なくともBronze DBA 2019の水準はカバーされているようには見えますが。
実際に試してみるとわかりますが、エラーにならずに削除できます。
SQL> CREATE TABLE parent
2 (
3 id NUMBER(2) CONSTRAINT pid_pk PRIMARY KEY,
4 dept_name VARCHAR2(10)
5 );
表が作成されました。
SQL> CREATE TABLE child
2 (
3 id NUMBER(2) CONSTRAINT cid_pk PRIMARY KEY,
4 name VARCHAR2(10) CONSTRAINT cname_uq UNIQUE,
5 deptid NUMBER(2) CONSTRAINT dept_fk REFERENCES parent (id) ON DELETE CASCADE
6 );
表が作成されました。
SQL> INSERT INTO parent VALUES (1, 'parent');
1行が作成されました。
SQL> INSERT INTO child VALUES (10, 'child', 1);
1行が作成されました。
SQL> ALTER TABLE child DROP (id);
表が変更されました。
SQL> desc child
名前 NULL? 型
----------------------------------------- -------- ----------------------------
NAME VARCHAR2(10)
DEPTID NUMBER(2)
SQL>
たとえば、列pkを他の表から参照する参照制約が他に存在しない場合は、次の文を指定するときにCASCADE CONSTRAINTS句がなくてもエラーにはなりません。
この設問においては、問題文のように別名なしでも結果は同じになると思いますが、実務上は特に可読性の観点からも必ず別名つけますよね(JOINするような場合ならもちろん)。
手持ちの試験対策系テキストを少し見て見ましたが、インラインビューの解説の中で別名を使っていないSQLも掲載されているようでした。FROM句に指定する副問合せの説明としては問題なさそうです。