web-dev-qa-db-ja.com

これは列挙型(列挙型)の例ですか?

継承したコードベースを見ています。私はPostgresを初めて使用します(ただし、Oracleのバックグラウンドを持っています)。これは、クエリの1つで列挙型の例だと思います。誰かが私がこの考え方で正しいかどうか、そうでない場合はこれが何であるか、そして私がそれについてもっと知る方法を確認できますか?.

SELECT fp.id AS fund_part_id, fp.fund_id, fp.principle_amount, fp.detail
FROM finance.fund_part fp
WHERE fp.status = 'live'::finance.fund_part_status;

1つのenumtypid oidに属する一連のレコードがあることをpg_enumカタログ(テーブル)で確認できます。 enumlabel name列のエントリの一部は['live', 'for sale', 'pre-agrement']です。

2
Mark

はい、finance.fund_part_statusは列挙型のようです。

psqlコマンドラインインタープリターを使用していると仮定して、次のコマンドを試してください。

\dT+ finance.fund_part_status;
1
Daniel Vérité

システムカタログテーブルpg_typeへのこのクエリで確実に見つけることができます:

SELECT typtype
FROM   pg_type
WHERE  oid = 'finance.fund_part_status'::regtype

引用します pg_typeに関するマニュアル

typtypeは、基本タイプの場合はb、複合タイプ(たとえば、テーブルの行タイプ)の場合はc、ドメインの場合はd、列挙型の場合はeです 、疑似タイプの場合はp、範囲タイプの場合はr。 typrelidおよびtypbasetypeも参照してください。

大胆な強調鉱山。
オブジェクト識別子タイプ に関する章のregtypeへのキャストの詳細。

1