欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PG数据库判断包含年度月份的表是否存在、字段是否存在,不存在则创建

程序员文章站 2022-06-03 09:44:51
...

说明

维护功能中需要升级表结构,增加字段。但是表比较特殊,是按月划分,所以需要动态拼接出表名

存储过程

DO $$
DECLARE
       audittable varchar(20);
       sqlstring varchar(100);      
BEGIN
SELECT into audittable ('gspaudit' || substring(to_char(now(), 'YYYYMMDD') from 3 for 4));
sqlstring = 'alter table ' || audittable || ' add column seclevel VARCHAR(256)';
IF EXISTS(select 1 FROM pg_tables WHERE tablename = audittable)
  THEN
    IF NOT EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = audittable AND COLUMN_NAME = 'seclevel' )
      THEN
        EXECUTE  (sqlstring);
    END IF;
END IF;
END $$;

注意事项

1、IF EXISTS写法是PG10之后支持的写法

相关标签: postgresql sql