[PostgreSQL][8.0.4] シーケンス関数の引数は regclass型ではなく text型 (ERROR: cannot cast type text to regclass)
PostgreSQL 8.0.4 にて、nextval((‘user_id_seq’::text)::regclass) というように、シーケンス関数の引数を text型ではなく、regclass型を渡してしまったため、エラーが発生しました。
■ エラー内容
ERROR: cannot cast type text to regclass
■ 参考情報
注意: PostgreSQL 8.1以前においては、シーケンス関数の引数はregclass型ではなく、text型で、そして上記のテキスト文字列からOID値への変換はそれぞれの呼び出し実行時に起こりました。後方互換性のため、この仕組みはまだ存在しますが、内部的には関数が実行される前にtextからregclassへの暗黙的強制型変換として現在処理されています。・引用元:シーケンス操作関数
■ SQL文(修正前)
CREATE SEQUENCE user_id_seq INCREMENT 1 START 1000;
CREATE TABLE user (
id integer DEFAULT nextval(('user_id_seq'::text)::regclass) NOT NULL,
name varchar(50) NOT NULL,
age integer NOT NULL
);
↓(修正)
■ SQL文(修正後)
CREATE SEQUENCE user_id_seq INCREMENT 1 START 1000;
CREATE TABLE user (
id integer DEFAULT nextval('user_id_seq') NOT NULL,
name varchar(50) NOT NULL,
age integer NOT NULL
);
以上です。