产生的业务场景是这样的:教研的同学配置试卷时,对一道大题下的小题同时进行了删除和新增操作,结果删除操作执行后,发现大题下没有小题,大题这个节点也就删除了,后续执行新增小题时,发现大题已经不存在,就会报错了。
数据库说明:存在上述报错是由于表结构设计的有主外键关系,然后小题依赖(父节点)大题的数据,表设计上小题的表的外键为大题的主键id。当大题的主键删除后,新增小题就会报:a foreign key constraint fails
总结:实现流程或者页面设计可以优化。当小题都删除时对应答题就不再显示,这样就能阻止新增的操作存在的可能。当然上述是发生在同一个操作,同一个线程,存在主外键的情况下才会发生。
先执行了删除大题
[2021-03-13 14:18:34.015] DEBUG [http-nio-8090-exec-2] BaseJdbcLogger.java:143 - ==> Preparing: delete from homework_outline_group where id = ?
[2021-03-13 14:18:34.016] DEBUG [http-nio-8090-exec-2] BaseJdbcLogger.java:143 - ==> Parameters: 7352(Integer)
[2021-03-13 14:18:34.033] DEBUG [http-nio-8090-exec-2] BaseJdbcLogger.java:143 - <== Updates: 1
接着执行新增小题数据
[2021-03-13 14:18:34.034] DEBUG [http-nio-8090-exec-2] BaseJdbcLogger.java:143 - ==> Preparing: insert into homework_operate_log ( lesson_id,

博客讲述了在删除具有外键约束的大题后尝试新增小题时遇到的问题,导致 foreign key constraint fails 错误。问题源于数据库表设计中,小题依赖大题的主键,当大题被删除后,无法再添加小题。解决方案包括流程或页面设计优化,避免同时删除和新增操作在同一主键下发生。
最低0.47元/天 解锁文章
6278

被折叠的 条评论
为什么被折叠?



