2016-03-24 5 views
0

データベースに新しい行を動的に挿入する必要がありますが、主キーである列がnextval()によって生成されるかどうかを定義する方法が見つかりませんでした。PostgreSQL v.9.1プライマリキーの値がnexval()によって生成されているかどうかを調べる方法は?

はい、私はhttp://www.postgresql.org/docs/9.1/static/catalogs.htmlとinformation_schemaを知っていますが、見つかりませんでした。

ありがとうございます!

答えて

1

pg_get_serial_sequence()を使用できます。この関数は、列に関連付けられたシーケンスの名前を返します(存在する場合)。そうでない場合はnullを返す:

select pg_get_serial_sequence('public.your_table_name', 'pk_column_name'); 
serial

又はbigserialように定義されるようなカラム列である場合

(またはシーケンスを手動列に「割り当て」されていなければならない)。なお、「のみ」 pk_column integer default nextval('pk_sequence')と定義されている場合は、列のデフォルト値を取得して手動で解析する必要があります。

select column_name, column_default 
from information_schema.columns 
where table_name = 'your_table_name' 
and table_schema = 'public' 
関連する問題