列がカタログに基づく整数ではなくシリアルデータ型として定義されているかどうかを確認するにはどうすればよいですか?
したがって、私は現在、テーブル定義を構築するためにpostgres(9.1)カタログを読むためのSQLをいくつか作成しています。ただし、SERIAL / BIGSERIALデータ型で問題が発生しています。 例: CREATE TABLE cruft.temp ( id BIGSERIAL PRIMARY KEY ); SELECT * FROM information_schema.columns WHERE table_schema='cruft' AND table_name='temp'; "db","cruft","temp","id",1,"nextval('cruft.temp_id_seq'::regclass)","NO","bigint",,,64,2,0,,,,,,,,,,,,,"db","pg_catalog","int8",,,,,"1","NO","NO",,,,,,,"NEVER",,"YES" データベース名(db)、スキーマ名(cruft)、テーブル名(temp)、列名(id)、デフォルト値(nextval(...))、データ型(bigintおよびint8 .. NOT bigserial) ...デフォルト値がシーケンスであるかどうかを確認するだけでよいことはわかっていますが、手動でシーケンスを作成し、デフォルト値が存在する非シリアル列を作成できるため、100%正確であるとは思いません。そのシーケンス。 誰か私がこれを達成する方法についての提案はありますか?nextval(* _ seq)のデフォルト値をチェックする以外に何かありますか? TL; DRまたはpg_catalogに不慣れな新規ユーザーの場合にここに追加されたSQLソリューション用に編集: with sequences as ( select oid, relname as sequencename from pg_class where relkind = 'S' ) select sch.nspname …