連載
» 2009年01月16日 00時00分 公開

表以外のスキーマオブジェクトの作成と管理間違いやすいポイントを追え! Bronze SQL基礎I(11)(2/2 ページ)

[ゴールデンフォレスト株式会社,@IT]
前のページへ 1|2       

順序の機能

例題3

順序に関する説明として正しいものを選択してください。

a.セッションで最後に割り当てた番号を取得するには、NEXTVALを使用する

b.セッションで最後に割り当てた番号を取得するには、CURRVALを使用する

c.MAXVALUEに達し、CYCLEが指定されていれば、MINVALUEから番号を取得する

d.CACHEを指定した場合、セッションで最後に割り当てられた番号はUSER_SEQUENCESのLAST_NUMBER列で確認できる

例題の範囲をおさらい

参考:「SQLで便利なオブジェクトを使いこなす

 順序は、一意な数値を生成するオブジェクトです。

正解

b、c

解説

選択肢a、b:あるセッションで最後に割り当てた番号を取得するには、CURRVALを使用します。

選択肢c:値が上限に達すると、最小値であるMINVALUEの値から番号が取得されます。

選択肢d:あるセッションで割り当てられた番号を確認するには、CURRVALを使用します。USER_SEQUENCESのLAST_NUMBER列では、次にメモリ上に取得される番号を確認することができます。

SQL> insert into test1
  2  values(test_seq1.nextval);
1行が作成されました。
SQL> select test_seq1.currval from dual;
   CURRVAL
----------
         5
SQL> select * from user_sequences
  2  where sequence_name='TEST_SEQ1';
SEQUENCE_NAME  MIN_VALUE  MAX_VALUE INCREMENT_BY CY OR CACHE_SIZE LAST_NUMBER
------------- ---------- ---------- ------------ -- -- ---------- -----------
TEST_SEQ1              5         10            1  N  N         20          11

 CURRVALの値より、現在の番号は5であることが確認できます。一方、USER_SEQUENCESのLAST_NUMBER列は11となっています。

 これはUSER_SEQUENCES のCACHE列よりCACHEの値は5であり、すでに10までメモリ上に取得されているため、次にメモリ上に取得される番号は11であるということを表します。LAST_NUMBER列から現在の値を確認することはできません。

 よって、正しいものは選択肢b、cです。

まとめ

 次の内容をチェックしましょう。

  • ビュー、シノニム、順序の作成構文
  • それぞれの機能とオプション

 今回の範囲は、試験で細かく出題される範囲ではありませんが、実運用では重要な部分です。よく学習しておきましょう。

 最終回である次回は、データディクショナリビューによるオブジェクトの管理について、間違いやすい点にポイントを絞って説明します。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。