SELECT
A.table_schema,
A."table_name",
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,
des.description
FROM
information_schema.
COLUMNS A LEFT JOIN pg_description des ON A.TABLE_NAME :: regclass = des.objoid
AND A.ordinal_position = des.objsubid
LEFT JOIN (
SELECT
pg_attribute.attname,
pg_class
FROM
pg_index,
pg_class,
pg_attribute
WHERE
pg_class.oid = 'dic_operation' :: regclass
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 = 'drg'
AND A.TABLE_NAME = 'dic_operation'
ORDER BY
ordinal_position ASC;
PostgreSql 获取表的字段多主键备注
最新推荐文章于 2024-08-11 09:55:17 发布