• postgres 表格按创建时间水平切分实例


    步骤:

    1. 一般我会先创建一个空的触发起函数,为了第二步先创建触发器,和触发器有关联以后,触发器中的new等关键字才能被编辑器识别,方便编辑触发器函数:
    create or replace function func_trigger_stock_move_insert()
        returns trigger
    as
    $$
    
    begin
        
    end
    $$ language plpgsql volatile;
    
    1. 创建触发器:
    create trigger trigger_insert_stock_move
        before insert
        on stock_move_father
        for each row
        execute procedure func_trigger_stock_move_insert();
    
    1. 再次编辑触发器函数:
    create or replace function func_trigger_stock_move_insert()
        returns trigger
    as
    $$
    declare
        var_sub_table_name character varying;
        var_is_exist       boolean;
        var_sql_create     character varying;
        var_sql_insert     character varying;
        var_date_start     date;
    
    begin
        --     设置本次要插入的表格var_sub_table_name
        var_sub_table_name := 'stock_move' || date_part('y', new.create_date)::char(4);
    -- 设置时间约束
        var_date_start := date_part('y', new.create_date)::char(4) || '-01' || '-01';
        select count(1) into var_is_exist from pg_class where relname = var_sub_table_name;
        if (var_is_exist = false) then
    --         创建新的表格.
            var_sql_create := format('    create table if not exists %s
        (
             check ( create_date >= %L and create_date <= %L )
        ) inherits (stock_move_father);', var_sub_table_name, var_date_start, (var_date_start + interval '1 year'));
            raise notice 'var_id:%',var_date_start;
            execute var_sql_create;
        end if;
    
        var_sql_insert = format('insert into %I select $1.*;', var_sub_table_name);
        execute var_sql_insert using new;
    
        --     表格创建完成后插入数据:
        return null;
    end
    $$ language plpgsql volatile;
    

    到这里,一个按照时间进行水平切分表格的触发器就完成啦.

    运行效果:

  • 相关阅读:
    Ajax学习感悟
    C#自定义控件designmodel的判断
    Asp.net+Flash多文件上传
    .net下帮助文件(sandcastle)
    水晶报表小例用于学习
    WinAPI转C#利器
    利用HttpHandler和Cache统计点击量
    关于C#调用API的理解(汇多考勤机HD4K)
    ubuntu 12.04 配置PHP開發環境遇到的問題
    windows 7 系統在VMWear workstation 9上安裝Mac OS X 10.7
  • 原文地址:https://www.cnblogs.com/qianxunman/p/13731538.html
Copyright © 2020-2023  润新知