java - replace into会清除中间表的其他数据?
高洛峰
高洛峰 2017-04-18 10:30:35
0
2
424

系统启动的时候初始化一些基础信息,使用了存储过程。
每次启动系统的时候调用存储过程。
表设计如下

存储过程如:

现在遇到的问题是每次启动系统时非中间表无任何问题,但是中间表的已有其他数据会全部清空。
为何会出现这样问题?
如何解决?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
洪涛

Replace:

replace 和 insert类似,如果一个表的新纪录和一个PRIMARY KEY或UNIQUE INDEX的旧数据相同,在新数据插入之前,旧数据会被删除。

外键约束和级联删除

猜测你的数据表里由于有外键约束,使得每当父表user,role的“id”键删除时,表user_role的相应内容也会被级联删除:on delete cascade on update cascade

user_info表的外键约束可能如下:

CONSTRAINT  FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) on delete cascade on update cascade ,

CONSTRAINT  FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) on delete cascade on update cascade
黄舟

我觉得你肯定有其他的地方清空了数据, 使用 replace into 没有遇到类似的问题。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板