mysql批量创建表

  • Post author:
  • Post category:mysql


#使用存储过程
delimiter //
CREATE PROCEDURE createTablesInBulk () BEGIN
	DECLARE
		i INT;
	DECLARE
		table_name VARCHAR ( 200 );
	DECLARE
		table_pre VARCHAR ( 200 );
	DECLARE
		sql_text VARCHAR ( 10000 );
	
	SET i = 1;
	
	SET table_name = '';
	
	SET table_pre = 'product_stocket_log';
	
	SET sql_text = '';
	WHILE
			i < 101 DO
		IF
			i < 10 THEN
				
				SET table_name = CONCAT( table_pre, "0", i );
			ELSE 
				SET table_name = CONCAT( table_pre, i );
			
		END IF;
		
		SET sql_text = CONCAT( 'CREATE TABLE ', table_name, "(
			`psl_id` int(11) NOT NULL AUTO_INCREMENT,
			`product_id` int(11) NOT NULL DEFAULT ' 0 ' COMMENT '产品 ID ',
			`user_id` int(11) NOT NULL DEFAULT ' 0 ' COMMENT '操作用户 ID / 0系统 /- 1客户 ',
			`psl_type` tinyint(1) NOT NULL DEFAULT ' 0 ' COMMENT ' 0:减库存;1:加库存 ',
			`psl_current_value` int(11) NOT NULL DEFAULT ' 0 ' COMMENT '当前可用库存',
			`psl_current_value_hold` int(11) DEFAULT ' 0 ' COMMENT '当前冻结库存数量',
			`psl_note` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
			`psl_add_time` datetime NOT NULL COMMENT '添加时间',
			`warehouse_id` int(11) NOT NULL DEFAULT ' 80 ' COMMENT '仓库 ID ',
			`psl_value` int(11) DEFAULT ' 0 ' COMMENT '当前操作数量',
			`psl_is_show` tinyint(1) DEFAULT ' 1 ' COMMENT ' 0:不显示,1:显示 ',
			PRIMARY KEY (`psl_id`),
			KEY `product_id` (`product_id`),
			KEY `warehouse_id` (`warehouse_id`)
		) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='产品库存日志表';" );
		
		SET @sql_text = sql_text;
		PREPARE stmt 
		FROM
			@sql_text;
		EXECUTE stmt;
		
		SET i = i + 1;
		
	END WHILE;
	
END;

#调用
CALL createTablesInBulk ();

#删除程序
DROP PROCEDURE createTablesInBulk;
//



版权声明:本文为x1207008324原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。