SELECT
A.ordinal_position,
A.column_name,
CASE A.is_nullable WHEN 'NO' THEN 0 ELSE 1 END AS is_nullable,
A.data_type,
coalesce(A.character_maximum_length, A.numeric_precision, -1) as length,
A.numeric_scale,
CASE WHEN length(B.attname) > 0 THEN 1 ELSE 0 END AS is_pk
FROM
information_schema.columns A
LEFT JOIN (
SELECT
pg_attribute.attname
FROM
pg_index,
pg_class,
pg_attribute
WHERE
pg_class.relname = 'BJHCST_index'
AND pg_index.indisunique = true
AND pg_index.indrelid = pg_class.oid
AND pg_attribute.attrelid = pg_class.oid
AND pg_attribute.attnum = ANY (pg_index.indkey)
) B ON A.column_name = b.attname
WHERE
A.table_schema = 'public'
AND A.table_name = 'BJHCST_index'
ORDER BY
ordinal_position ASC;
postgreSQL 查询 属性列 和主键
于 2022-10-17 11:30:52 首次发布