令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問1
テクノロジ/データベースSQL のシーケンスに関する説明のうち,適切なものはどれか。
出典:令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問1
- ア現在基底値が 0→1→2→0→1→2→0→... のように,周期的に繰り返すシーケンスを定義することはできない。
- イシーケンスの現在基底値を,最小値と最大値との間の任意の整数値に変更することはできない。
- ウシーケンスの増分を,負の整数値にすることはできない。
- エトランザクション開始後のシーケンスの値の取得による現在基底値の変更は,トランザクションのロールバックでその変更を取り消すことができない。
正解:エ
解説
SQL のシーケンスは,一意な数値を自動的に生成するオブジェクトであり,NEXT VALUE FOR などによる値の取得はトランザクションの管理外で動作します。そのため,シーケンスの現在基底値の変更は,値を取得したトランザクションをロールバックしても取り消されません。これはシーケンスが,複数のトランザクションから同時にアクセスされても重複のない値を採番できるようにするための仕組みです。
選択肢ごとの解説
- ア誤り。シーケンスは最大値到達後に最小値へ戻る CYCLE オプションを指定できるため,周期的に繰り返すシーケンスを定義することができます。
- イ誤り。ALTER SEQUENCE の RESTART WITH などを用いれば,シーケンスの現在基底値を最小値と最大値の間の任意の整数値に変更することができます。
- ウ誤り。シーケンスの増分(INCREMENT BY)には負の整数値を指定でき,値を減算方向に生成するシーケンスを定義できます。
- エ正しい。シーケンスの値の取得によるカウンタの変更はトランザクションの制御対象外であるため,トランザクションをロールバックしてもシーケンスの現在基底値は元に戻りません。