pg数据库从数据库同步结构过来,无法识别字段的默认值

Viewed 53

pg数据库从数据库同步结构过来,无法识别字段的默认值

2 Answers

替换pg的字段查询模板(如下图)

7234121e-d3f5-4f32-b0e2-2323cf61ef2c.png

SELECT
    col.table_schema as schema_name,
    col.TABLE_NAME AS tbl_def_key,
    col.ordinal_position AS order_value,
    col.COLUMN_NAME AS def_key,
    d.description AS def_name,
		'' AS intro,
    col.udt_name AS db_data_type,
		CASE WHEN col.character_maximum_length IS NULL AND col.numeric_precision IS NOT NULL THEN col.numeric_precision
		     ELSE col.character_maximum_length
		END AS data_len,
		CASE WHEN col.numeric_precision IS NOT NULL THEN (CASE WHEN col.numeric_scale = 0 THEN NULL ELSE col.numeric_scale END)
				ELSE NULL
		END AS num_scale,
    CASE WHEN kc.column_name IS NOT NULL THEN 1 ELSE 0 END AS primary_key,
    CASE WHEN col.IS_NULLABLE = 'NO' THEN 1 ELSE 0 END AS not_null,
    CASE WHEN col.COLUMN_DEFAULT LIKE 'nextval%' THEN 1 ELSE 0 END AS auto_increment,
	regexp_replace(col.column_default, '::[^:]*$', '') AS default_value
FROM
    information_schema.COLUMNS col LEFT JOIN (information_schema.key_column_usage kc LEFT JOIN information_schema.table_constraints tc
																								ON
																											kc.constraint_name = tc.constraint_name
																									and tc.constraint_type = 'PRIMARY KEY'
																									and kc.table_schema=tc.table_schema
																									and kc.table_name=tc.table_schema
																					) ON
																								col.TABLE_NAME = kc.table_name
																						AND col.COLUMN_NAME = kc.column_name  AND kc.table_schema = col.table_schema
LEFT JOIN pg_class C ON C.relname = col.TABLE_NAME
LEFT JOIN pg_namespace n ON col.table_schema = n.nspname AND c.relnamespace = n.oid
LEFT JOIN pg_description d ON d.objoid = C.oid AND d.objsubid = col.ordinal_position
WHERE
    col.table_schema IN (:schemaName)
    AND nspName IN (:schemaName)
    AND CONCAT(col.table_schema, '.', col.TABLE_NAME) IN (:sysTableNames)
ORDER BY
	col.table_schema asc, col.TABLE_NAME asc,col.ordinal_position ASC

v2.2.1 pro 无法进行这个操作

进到项目里面去操作

获取到默认值不全

获取到默认值不全

image.png