开始【瞎折腾系列】,这个系列纯属瞎折腾,可能没有什么实际意义。
mysql存储过程生成表:
新建一张user表,包含id, username , password , usertable字段。
然后创建存储过程:
create PROCEDURE create_table() BEGIN DECLARE n int DEFAULT 0; DECLARE t_error INTEGER DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; temp_loop:LOOP START TRANSACTION; SET @m=replace(UUID(),‘-‘,‘‘); set @str=concat(‘create table x‘,@m,‘(id int)‘); prepare stmt FROM @str; EXECUTE stmt; set @insertstr=concat(‘insert into user(username,password,usertable) values("test","testp","x‘,@m,‘")‘); prepare stmt1 FROM @insertstr; EXECUTE stmt1; IF t_error = 1 THEN ROLLBACK; ELSE COMMIT; END IF; set n=n+1; IF n>=2000 THEN LEAVE temp_loop; END IF; END LOOP; END
通过UUID()获取UUID,然后去掉-线,然后在前面加个x,为什么加x呢,因为直接用UUID做表名有时候会报错,具体原因不明。
然后生成username,password,再把生成的表名插入到usertable字段中。
通过CALL creat_table();执行存储过程。