PostgreSQL覚書 列にシーケンス値を適用させる

CREATE TABLE時にシーケンスと紐付けるのを忘れていた。
後から列にシーケンスを紐付けるやり方のメモ。

ALTER TABLE テーブル名
    ALTER COLUMN 列名
    SET DEFAULT nextval(‘シーケンス名’::regclass);

regclassってなんやのん?、と調べたが、
オブジェクト識別子(OID) ~内部システムテーブルに付けられる任意の主キー~の一つ、とのこと。
詳しくは、PostgreSQL 8.0.0 文書「オブジェクト識別子データ型」

ハァ?

ってカンジだが、ここでは指定したシーケンスの型に合わせますよ!って意味と捉えた。

こうして、SQL文実行前

CREATE TABLE テーブル名 (列名 integer NOT NULL,・・・・

が、SQL文実行後には、

CREATE TABLE テーブル名 (列名 serial NOT NULL,・・・・

に変わった。
実行後試しにINSERT文を実行して、シーケンスが有効になっていることが確認できた。

Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください