반응형
Postgres ENUM 유형 나열
ENUM 유형을 나열 하는 제안 된 쿼리 는 훌륭합니다. 그러나 그것은 단지 schema
및 typname
. 실제 ENUM 값을 어떻게 나열합니까? 예를 들어, 위의 링크 된 답변에서 다음 결과를 원할 것입니다.
schema type values
------------- -------- -------
communication channels 'text_message','email','phone_call','broadcast'
select n.nspname as enum_schema,
t.typname as enum_name,
e.enumlabel as enum_value
from pg_type t
join pg_enum e on t.oid = e.enumtypid
join pg_catalog.pg_namespace n ON n.oid = t.typnamespace
select enum_range(enum_first(null::province),null::province);
다음을 통해 데이터 유형을 나열 할 수 있습니다.
\dT+ channels
https://www.postgresql.org/docs/current/static/app-psql.html#APP-PSQL-META-COMMANDS
나는 항상 이것을하는 방법을 잊는다. 다른 답변과 주석에 따라 여기에는 쉼표로 구분 된 목록이 있습니다. 복사-붙여 넣기 스 니펫을 좋아합니다. 도와 주셔서 감사합니다:
select n.nspname as enum_schema,
t.typname as enum_name,
string_agg(e.enumlabel, ', ') as enum_value
from pg_type t
join pg_enum e on t.oid = e.enumtypid
join pg_catalog.pg_namespace n ON n.oid = t.typnamespace
group by enum_schema, enum_name;
@dpb :
이에 대한 영구적 인 쉬운 액세스 방법을 만들려면 항상보기를 만들 수 있습니다.
CREATE OR REPLACE VIEW oublic.enumz AS
SELECT n.nspname AS enum_schema,
t.typname AS enum_name,
e.enumlabel AS enum_value
FROM pg_type t
JOIN pg_enum e ON t.oid = e.enumtypid
JOIN pg_namespace n ON n.oid = t.typnamespace;
그런 다음 삽입 명령에 대한 트리거를 만들 수 있습니다.
위의 내용은 나중에 참조 할 수 있도록 데이터베이스에 저장합니다.
여기에는 모든 열거 형 열과 잠재적 값 이 나열 됩니다.
SELECT
table_schema || '.' || table_name || '.' || column_name as field_name,
pg_enum.enumlabel as value
FROM pg_type
JOIN pg_enum ON pg_enum.enumtypid = pg_type.oid
JOIN pg_namespace on pg_type.typnamespace = pg_namespace.oid
JOIN information_schema.columns ON (information_schema.columns.udt_name = pg_type.typname AND information_schema.columns.udt_schema = pg_namespace.nspname)
WHERE pg_type.typtype = 'e'
ORDER BY field_name, pg_enum.enumsortorder;
테이블 및 열 이름이 있지만 유형 이름이 아닌 경우 다음을 사용하십시오.
SELECT pg_enum.enumlabel
FROM pg_type
JOIN pg_enum ON pg_enum.enumtypid = pg_type.oid
JOIN information_schema.columns ON information_schema.columns.udt_name =
pg_type.typname
WHERE pg_type.typtype = 'e' AND
table_name = $1 AND column_name = $2 ORDER BY pg_enum.enumsortorder
당신이 사용하는 경우 enum_range
당신이 원하는하지 않은, 존재하는 각 행에 대한 데이터를 반환합니다 (유형에 사용되는 다른 답변 대조적으로) 열에. 따라서 위의 쿼리를 대신 사용하십시오.
참고 URL : https://stackoverflow.com/questions/9540681/list-postgres-enum-type
반응형
'Programing' 카테고리의 다른 글
자바 : 객체가 null인지 확인하는 방법? (0) | 2020.10.31 |
---|---|
BATCH 파일은 파일 또는 폴더를 요구합니다. (0) | 2020.10.31 |
Rails 마이그레이션 : 현재 마이그레이션 버전을 검색하는 가장 좋은 방법 (0) | 2020.10.31 |
JQuery를 사용하여 이벤트를 발생시킨 요소의 클래스 가져 오기 (0) | 2020.10.31 |
Ruby에서 배열에서 해시를 만들려면 어떻게해야합니까? (0) | 2020.10.31 |