mysql动态分区_MySQL动态创建分区
按日期分區的數據表,我們希望每年、每個月甚至每天動態創建一個分區,這種情況就需要用事件和存儲過程來實現動態添加分區,下面的存儲過程是按年分區增加當年分區的過程:
BEGIN
#Routine body goes here...
DECLARE currentTime date DEFAULT CURDATE();
DECLARE partName VARCHAR(12);
DECLARE i_part_name VARCHAR(12);
DECLARE i_flag INT DEFAULT 0;
DECLARE currentYear INT DEFAULT 0;
#指針遍歷分區名,避免定義重復分區名
DECLARE cur_partition CURSOR for select partition_name part from information_schema.PARTITIONS
where TABLE_SCHEMA = schema() and TABLE_NAME='test';
#此句必須添加,不然會出現死循環,含義是當遍歷指針為空后賦值此變量為NULL
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET i_part_name = NULL;
#定義欲創建的分區名,用于遍歷匹配已有分區名
SET partName=CONCAT('part_',YEAR(currentTime));
OPEN cur_partition;
FETCH cur_partition into i_part_name;
WHILE (i_part_name IS NOT NULL)
DO
IF i_part_name = partName THEN
SET i_flag = 1;
END IF;
FETCH cur_partition into i_part_name;
END WHILE;
CLOSE cur_partition;
#如果沒有創建分區則創建當前年份的分區
IF i_flag = 0 THEN
SET currentYear=YEAR(currentTime) + 1;
SET @v_add_s = CONCAT('ALTER TABLE test ADD PARTITION (PARTITION ',partName,' VALUES LESS THAN (',currentYear,'))');
prepare stmt from @v_add_s;
execute stmt;
deallocate prepare stmt;
END IF;
END
總結
以上是生活随笔為你收集整理的mysql动态分区_MySQL动态创建分区的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: seafile安装教程mysql密码_S
- 下一篇: mysql删除账户后不能使用_MySQL