MySql存储过程动态创建表并插入数据
最近做的一个项目,数据库用的是MySql,对于MySql不是很熟练,只是会简单的应用,毕竟简单的sql语句还是相通的,但是随着项目的深入复杂的sql语句开始慢慢多起来,其中一个小难点就是要根据当天的日期动态创建表,并且向其中插入数据。
具体逻辑可以理解为,先去数据库查询有没有当天的记录表,如果没有则创建表,然后执行当天的日志写入。
Mysql的可视化工具我们用的是navicat,相对来说还是比较好用,当然没有sqlserver 那么人性化(很多快捷键不支持,操作累赘)。下面我就来说一说用navicat如何动态创建数据库表并且插入数据。
一:创建存储过程
二:用concat函数拼接动态创建表的语句并执行
三:同样用concat函数拼接向动态创建的表写入数据的语句并执行
因为数据库表都是固定前缀加当前日期的形式,所以无论创建表还是写入数据其实都是根据动态表来的,所以不能向原来那种固定表一样来写简单的insert 语句,另外,传给存储过程的参数id,并不能直接传给存储的insert语句,会报sql语句错误,所以需要引入局部参数,可能并不是最好的办法,但是目前作者还没找到更好的写法,如果大家有什么更好的或者觉得哪里可以改进的希望多多交流。
对于mysql,我们不可忽视其强大,mysql还有很多需要学习的,接下来既然每天都动态生成记录表了,那么肯定需要一个job,来按照一定的时间规律来清除或者备份数据库表,接下来就要研究mysql的job,慢慢来,要学的还很多。
发布php中文网,转载请注明出处,感谢您的尊重!