mysql存储过程创建分表00-99

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_29843547/article/details/78961484

存储过程各个数据库语法差异很多,花点时间自己动手写写

DROP PROCEDURE IF EXISTS `proc_create_table`;
DELIMITER ;;
CREATE PROCEDURE `proc_create_table`()
BEGIN
    DECLARE i int;
    DECLARE s varchar(45);
    DECLARE tableName varchar(100);
    SET i = 0;
    WHILE i <= 99 DO
    	IF i < 10 THEN
        	set s = CONCAT('0',i);
        ELSE
        	set s = i;
        END IF;
        set i = i + 1;
        set tableName = CONCAT('tb_user_***',s);
        set @csql = CONCAT('CREATE TABLE IF NOT EXISTS ',tableName,' (
  `_ID` varchar(100) NOT NULL COMMENT \'ID\n\',
  `USER_ID` bigint(45) DEFAULT NULL,
  `REMARK` varchar(300) DEFAULT NULL COMMENT \'信息:\',
  `CREATE_TIME` timestamp(3) NULL DEFAULT NULL,
  `UPDATE_TIME` timestamp(3) NULL DEFAULT NULL,
  PRIMARY KEY (`***`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;');
    PREPARE create_stmt from @csql;  
    EXECUTE create_stmt;
    END WHILE;
END
;;
DELIMITER ;

call proc_create_table

修改分表添加字段

DROP PROCEDURE IF EXISTS `proc_create_table`;
DELIMITER ;;
CREATE PROCEDURE `proc_create_table`()
BEGIN
    DECLARE i int;
    DECLARE s varchar(45);
    DECLARE tableName varchar(100);
    SET i = 0;
    WHILE i <= 99 DO
    	IF i < 10 THEN
        	set s = CONCAT('0',i);
        ELSE
        	set s = i;
        END IF;
        set i = i + 1;
        set tableName = CONCAT('tb_user_sport_social_recommend_',s);
        set @csql = CONCAT('ALTER TABLE ',tableName,'
  ADD `REMARK` varchar(500) NOT NULL;');
    PREPARE create_stmt from @csql;  
    EXECUTE create_stmt;
    END WHILE;
END
;;
DELIMITER ;

call proc_create_table

猜你喜欢

转载自blog.csdn.net/sinat_29843547/article/details/78961484
今日推荐