Oracleで自動採番を実現する方法

Oracleデータベースでは、シーケンスを使用して自動採番を実現できます。

まず、シーケンスオブジェクトを作成する必要があります。以下に示す構文を使用できます。

CREATE SEQUENCE sequence_name
[INCREMENT BY n]
[START WITH n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE];

この中で、sequence_name はシーケンス名で、INCREMENT BY はシーケンスが都度増加する値であり、デフォルトでは 1 です。START WITH はシーケンスの初期値であり、デフォルトでは 1 です。MAXVALUE と MINVALUE はシーケンスの最大値と最小値であり、制限がないことを示すには NOMAXVALUE と NOMINVALUE を使用できます。CYCLE と NOCYCLE はシーケンスを繰り返すかどうかを指定し、CACHE と NOCACHE はシーケンスのキャッシュサイズを指定します。

シーケンスを作成したら、次の構文を使用してシーケンスの次の値を取得できます。

SELECT sequence_name.NEXTVAL FROM dual;

この関数はシーケンスの次の値を返し、シーケンスの現在の値をインクリメントします。

例えば、シーケンス名 seq_id、初期値 1、増分値 1 のシーケンスを作成する場合、次の文を使用します。

CREATE SEQUENCE seq_id
INCREMENT BY 1
START WITH 1
NOCACHE;

次に、以下の文を使用して、シーケンスの次の値を取得できます。

SELECT seq_id.NEXTVAL FROM dual;

上の文を実行するたびに、シーケンスの次の値が返され、シーケンスの現在の値はインクリメントされます。

シーケンスのほかに、トリガーを使用することで自動連番も実現できます。そのトリガーは、データが挿入されるときに自動的に次の値を計算し、対応するフィールドに挿入します。ただし、シーケンスの方がよりシンプルで柔軟です。

bannerAds