CREATE OR REPLACE FUNCTION add_column_to_tables(column_name TEXT, data_type TEXT, table_names TEXT[])
RETURNS VOID AS $$
DECLARE
table_name TEXT;
BEGIN
-- 遍历表名数组
FOREACH table_name IN ARRAY table_names LOOP
-- 动态生成并执行添加字段的 SQL 语句
EXECUTE format('ALTER TABLE %I ADD COLUMN IF NOT EXISTS %I %s', table_name, column_name, data_type);
END LOOP;
END;$$LANGUAGE plpgsql;
给每张表增加一个租户id字段,NOT IN指定不需要添加租户id表名,多个表名用逗号分隔
SELECT add_column_to_tables('tenant_id', 'VARCHAR(255)', ARRAY( SELECT tablename FROM pg_tables WHERE schemaname = current_schema() AND tablename NOT IN ('表名1', '表名2')));