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

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

存储过程如:

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

高洛峰
高洛峰

拥有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 沒有遇到類似的問題。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板