zoukankan      html  css  js  c++  java
  • Postgresql 分表

    一. 创建主表

    CTEATE TABLE tb_log( id int, createtime date );
    

    二. 创建分表并继承主表(可以没有check约束)

    CREATE TABLE tb_log_20200308
                 (
                              CHECK ( createtime >= DATE '2020-03-08'
                              AND createtime      < DATE '2020-03-09' )
                 )
                 INHERITS
                 (
                              tb_log
                 )
    ;
    CREATE TABLE tb_log_20200309
                 (
                              CHECK ( createtime >= DATE '2020-03-09'
                              AND createtime      < DATE '2020-03-10' )
                 )
                 INHERITS
                 (
                              tb_log
                 )
    ;
    

    三. 创建触发器函数

    CREATE OR REPLACE FUNCTION function_insert_tb_log()
        RETURNS TRIGGER
    AS
        $$
    BEGIN
        IF ( NEW.createtime >= DATE '2020-03-08'
            AND
            NEW.createtime < DATE '2020-03-09' ) THEN
            INSERT INTO tb_log_20200308 VALUES
                   (NEW.*
                   )
            ;
        
        ELSIF ( NEW.createtime >= DATE '2020-03-09'
            AND
            NEW.createtime < DATE '2020-03-10' ) THEN
            INSERT INTO tb_log_20200309 VALUES
                   (NEW.*
                   )
            ;
        
        ELSE
            RAISE
        EXCEPTION
            'Date out of range.  Fix the function_insert_tb_log() function!';
        END IF;
        RETURN NULL;
    END;
    $$ LANGUAGE plpgsql;
    

    四. 创建触发器

    CREATE TRIGGER trigger_insert_tb_log BEFORE
    INSERT
    ON
           tb_log FOR EACH ROW EXECUTE PROCEDURE function_insert_tb_log()
    ;
    

    以后每天定时执行第二步第三步就可以实现分表存储每日的数据,主表是不存储数据的,当某个日期的数据不需要时可以直接删除对应日期的分区表

    关于作者:奔跑的五花肉

    本博客所有文章仅用于学习、研究和交流目的。

    博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高,不足和错误之处在所难免,希望大家能够批评指出。

    博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个无耻的文档搬运工!

  • 相关阅读:
    从0开始学Swift笔记整理(二)
    从0开始学Swift笔记整理(一)
    JAVA反射机制
    Spring基础知识汇总
    关于类和对象的进一步讨论 C++
    C++ 共用体 枚举类型 所有
    自定义数据类型 C++ 结构体类型 共同体类型 枚举类型 类类型{}
    C++ 指针 引用 变量引用
    函数和指针 C++
    C++字符串与指针 所有的内容也就这么多了。
  • 原文地址:https://www.cnblogs.com/runbean/p/12441218.html
Copyright © 2011-2022 走看看