利用PostgreSQL的存储过程为多个库表增加固定字段
warning:
这篇文章距离上次修改已过424天,其中的内容可能已经有所变动。
CREATE OR REPLACE FUNCTION add_fixed_columns_to_tables()
RETURNS void AS $$
DECLARE
table_record RECORD;
BEGIN
FOR table_record IN SELECT tablename FROM pg_catalog.pg_tables WHERE schemaname = 'public' LOOP
EXECUTE format('ALTER TABLE %I ADD COLUMN is_deleted BOOLEAN NOT NULL DEFAULT FALSE', table_record.tablename);
EXECUTE format('ALTER TABLE %I ADD COLUMN created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP', table_record.tablename);
EXECUTE format('ALTER TABLE %I ADD COLUMN updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP', table_record.tablename);
END LOOP;
END;
$$ LANGUAGE plpgsql;
SELECT add_fixed_columns_to_tables();这段代码首先定义了一个函数add_fixed_columns_to_tables,它遍历public模式下的所有表,并为每个表添加了三个固定的列:is_deleted、created_at和updated_at。使用format函数可以避免SQL注入风险,并且使代码更加灵活和易于维护。最后,调用这个函数来执行操作。
评论已关闭