PostgreSQLでAUTO_INCREMENTする

PostgreSQLでAUTO_INCREMENTする

serial

MySQLだとAUTO_INCREMENT属性がありますが、PostgreSQLではSERIAL型、またはBIGSERIAL型にすればインクリメントされるようになります。

create table sample_table (
    id SERIAL NOT NULL
  , name character varying(30)
  , PRIMARY KEY(id)
);

裏ではシーケンスオブジェクトが作成されます。

「テーブル名_カラム名_seq」という名前のシーケンスオブジェクトが作成されます。

シーケンス初期化

シーケンスオブジェクトが発番する値を初期化したい場合はsetvalで指定しなおします。

select setval('シーケンスオブジェクト名', 1, false);

これで次回インサート時に1が設定されます。

generated always as identity

generated always as identityを指定して同様のことができるようになります。

create table sample_table (
    id GENERATED ALWAYS AS IDENTITY
    , name character varying(30)
    , PRIMARY KEY(id)
);

コメント

タイトルとURLをコピーしました