系统启动的时候初始化一些基础信息,使用了存储过程。每次启动系统的时候调用存储过程。表设计如下
存储过程如:
现在遇到的问题是每次启动系统时非中间表无任何问题,但是中间表的已有其他数据会全部清空。为何会出现这样问题?如何解决?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
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 沒有遇到類似的問題。
replace into
Replace:
replace 和 insert類似,如果一個表格的新紀錄和一個PRIMARY KEY或UNIQUE INDEX的舊資料相同,在新資料插入之前,舊資料會被刪除。
外鍵約束和級聯刪除
猜測你的資料表裡由於有外鍵約束,使得每當父表user,role的「id」鍵刪除時,表user_role的對應內容也會被級聯刪除:on delete cascade on update cascade
user_info表的外鍵約束可能如下:
我覺得你肯定有其他的地方清空了數據, 使用
replace into
沒有遇到類似的問題。