Oracle 创建自增表分区之按月、按天自增表分区
-- 创建一个按月自增的表分区
BEGIN
FOR i IN 1..12 -- 假设我们只需要12个分区
LOOP
EXECUTE IMMEDIATE 'ALTER TABLE sales ADD PARTITION partition_' || TO_CHAR(ADD_MONTHS(TO_DATE('2020-01-01', 'YYYY-MM-DD'), i - 1), 'YYYYMM') ||
' VALUES LESS THAN (TO_DATE(''' || TO_CHAR(ADD_MONTHS(TO_DATE('2020-01-01', 'YYYY-MM-DD'), i), 'YYYY-MM-DD') ||
'','YYYY-MM-DD'))';
END LOOP;
END;
/
-- 创建一个按天自增的表分区
BEGIN
FOR i IN 1..31 -- 假设我们只需要31个分区
LOOP
EXECUTE IMMEDIATE 'ALTER TABLE sales ADD PARTITION partition_' || TO_CHAR(ADD_MONTHS(TO_DATE('2020-01-01', 'YYYY-MM-DD'), i - 1), 'YYYYMMDD') ||
' VALUES LESS THAN (TO_DATE(''' || TO_CHAR(ADD_MONTHS(TO_DATE('2020-01-01', 'YYYY-MM-DD'), i), 'YYYY-MM-DD') ||
'','YYYY-MM-DD'))';
END LOOP;
END;
/
这个例子中,我们使用了PL/SQL的循环结构来创建分区。对于按月分区,我们使用了ADD_MONTHS
函数来计算分区的边界,并将它们格式化为YYYYMM
。对于按天分区,我们直接使用ADD_MONTHS
来计算边界,并将结果格式化为YYYYMMDD
。这些分区的名称是自动生成的,并且基于分区的日期范围。
评论已关闭