[PostgreSQL][8.0.4] シーケンス関数の引数は regclass型ではなく text型 (ERROR: cannot cast type text to regclass)
- 2012 3/2
- カテゴリー : 未分類
- PostgreSQL
- コメントを書く
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 ); |
以上です。