2025年SQLSTATE[23000]主键重复

SQLSTATE[23000]主键重复1 表操作简介 批量更新的时候需要对 w table 1 和 w table 2 两个表做写操作 所以 在代码中使用事务操作 对这两个表做一致性处理 因为使用事务做一致性处理 所以 在实行事务之前 认为这两个表的数据是一致的 2 一致性校验条件 需要对于 w table 1 表和 w table 2 表的某些属性值作为参照 用于数据一致性校验的条件 w table 1 表 更新的数据条目

大家好,我是讯享网,很高兴认识大家。

1、表操作简介
批量更新的时候需要对w_table_1和w_table_2两个表做写操作,所以,在代码中使用事务操作,对这两个表做一致性处理。
因为使用事务做一致性处理,所以,在实行事务之前,认为这两个表的数据是一致的。

2、一致性校验条件
需要对于w_table_1表和w_table_2表的某些属性值作为参照,用于数据一致性校验的条件。
w_table_1表:更新的数据条目。(需要对w_table_1表的相应的car_id数据的inspection_status字段更新)在在yii框架中,只用AR的updateall方法更新数据库的时候,返回更新成功的条目数,就选用更新条目数作为一致性判断的条件。

w_table_2表:将相应的car的年检信息插入该表的数量。(由于事务的一致性保证,默认情况下,在w_table_1表获得更新的car_id的完整的年检数据在w_table_2表是没有记录的)

3、数据更新保存失败描述

发现对同一组car_id进行批量安排年检总是失败,而且失败的car_id是一定的

4、原因阐述
由于我们使用事务保证数据一致性,所以默认w_table_1表和w_table_2表的数据是一致的。也就是说w_table_1表更新的数据条目数和w_table_2表新插入的数据数量是相等的。

但是,测试的过程中,测试人员在生成需要的数据时候只是对w_table_1表的数据进行还原,没有将w_car_inspection表的相应数据删除,所以,导致在插入w_table_2表的时候出现CDbCommand failed to execute the S


讯享网

小讯
上一篇 2025-02-11 11:20
下一篇 2025-03-17 10:23

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/18047.html