問 1
SQLSQL のシーケンスに関する説明のうち,適切なものはどれか。
- ア現在基底値が 0→1→2→0→1→2→0→... のように,周期的に繰り返すシーケンスを定義することはできない。
- イシーケンスの現在基底値を,最小値と最大値との間の任意の整数値に変更することはできない。
- ウシーケンスの増分を,負の整数値にすることはできない。
- エトランザクション開始後のシーケンスの値の取得による現在基底値の変更は,トランザクションのロールバックでその変更を取り消すことができない。
解答と解説を見る
正解: エ
結論: シーケンスから取り出した値は、ロールバックしても戻りません。
なぜ: シーケンスは「番号を配る機械」で、トランザクションの外で動きます。取り消せるようにすると、同じ番号を 2 人が同時に受け取ってしまうためです。結果として、失敗したトランザクションが取った番号は欠番として飛びます。伝票番号などを「連続していること」前提で設計すると、ここで破綻します。
残りはいずれも「できない」と言っていますが、実際にはできます。
- ア …
CYCLEを指定すれば、最大値に達したあと最小値へ戻って繰り返せます - イ …
ALTER SEQUENCE ... RESTARTやsetvalで好きな値に置き直せます - ウ … 増分は負でもよく、その場合は値が減っていきます
解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。
- PostgreSQL 18 マニュアル: CREATE SEQUENCE(CYCLE・増分・RESTART)(2026-09-02 確認)
- PostgreSQL 18 マニュアル: シーケンス操作関数(ロールバックしても戻らない)(2026-09-02 確認)