利用PostgreSQL的存储过程为多个库表增加固定字段
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注入风险,并且使代码更加灵活和易于维护。最后,调用这个函数来执行操作。
评论已关闭