2011-08-19
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文を実行して、シーケンスが有効になっていることが確認できた。