oracle按天分区,一次创建一年的分区

自动分区方式

-- 该方式为区间分区,系统每天自动生成新的分区,无需手动增加分区,但是无法自定义分区名
-- 假设有一个交易表,包含列 transaction_id, transaction_date 等
CREATE TABLE transactions (
    transaction_id NUMBER PRIMARY KEY,
    transaction_date DATE NOT NULL,
    -- 其他列...
)
PARTITION BY RANGE (transaction_date) INTERVAL (INTERVAL '1' DAY) (
    PARTITION transactions_20240101 VALUES LESS THAN (DATE '2024-01-02')
);

手动增加分区 

-- 范围分区,手动增加分区,可设定分区名称
CREATE TABLE transactions (
    transaction_id NUMBER PRIMARY KEY,
    transaction_date DATE NOT NULL,
    -- 其他列...
)
PARTITION BY RANGE (transaction_date)(
    PARTITION transactions_20240101 VALUES LESS THAN (TO_DATE('20240101', 'YYYYMMDD'))
);
-- 预先创建一年的分区(从2024年1月2日到2025年1月1日)
DECLARE
   v_start DATE := DATE '2024-01-02';
   v_end DATE := ADD_MONTHS(v_start, 12);
BEGIN
   WHILE v_start < v_end LOOP
      EXECUTE IMMEDIATE 'ALTER TABLE transactions ADD PARTITION transactions_' || TO_CHAR(v_start, 'YYYYMMDD') || ' VALUES LESS THAN (TO_DATE(''' || TO_CHAR(v_start + 1, 'YYYY-MM-DD') || ''', ''YYYY-MM-DD''))';
      v_start := v_start + INTERVAL '1' DAY;
   END LOOP;
END;

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值