根据条件为某数据库下的某些业务表添加更新日期字段,以下代码适用于Highgo数据库,逻辑可以迁移
sql
CREATE OR REPLACE FUNCTION add_common_columns()
RETURNS void
LANGUAGE plpgsql
AS $$
DECLARE
tbl record;
BEGIN
FOR tbl IN
SELECT
t.table_schema, -- 添加schema名
t.table_name
FROM
information_schema.tables t
WHERE upper(table_schema) LIKE upper('wf%')
-- t.table_schema NOT IN ('pg_catalog', 'information_schema')
AND t.table_type = 'BASE TABLE'
AND NOT EXISTS (
SELECT 1
FROM information_schema.columns c
WHERE c.table_schema = t.table_schema -- 添加schema条件
AND c.table_name = t.table_name
AND c.column_name = 'updatetimecol'
)
AND NOT EXISTS (
SELECT 1
FROM information_schema.columns c
WHERE c.table_schema = t.table_schema -- 添加schema条件
AND c.table_name = t.table_name
AND c.column_name = 'inspurflag'
)
LOOP
-- 使用schema限定的表名
EXECUTE format('ALTER TABLE %I.%I ADD COLUMN updatetimecol TIMESTAMP DEFAULT CURRENT_TIMESTAMP',
tbl.table_schema, tbl.table_name);
EXECUTE format('ALTER TABLE %I.%I ADD COLUMN inspurflag bpchar(1) DEFAULT ''0''',
tbl.table_schema, tbl.table_name);
RAISE NOTICE '已为表 %.% 添加 updatetimecol 和 inspurflag 字段', tbl.table_schema, tbl.table_name;
END LOOP;
END;
$$;
-- 调用函数
SELECT add_common_columns();