系统启动的时候初始化一些基础信息,使用了存储过程。每次启动系统的时候调用存储过程。表设计如下
存储过程如:
现在遇到的问题是每次启动系统时非中间表无任何问题,但是中间表的已有其他数据会全部清空。为何会出现这样问题?如何解决?
拥有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
没有遇到类似的问题。