■例題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です。
■まとめ
次の内容をチェックしましょう。
今回の範囲は、試験で細かく出題される範囲ではありませんが、実運用では重要な部分です。よく学習しておきましょう。
最終回である次回は、データディクショナリビューによるオブジェクトの管理について、間違いやすい点にポイントを絞って説明します。
Copyright © ITmedia, Inc. All Rights Reserved.