使用BulkUpdate报错,无法在源表中获得一组稳定的行 返回

SqlSugar 沟通中
7 249

 //循环修改付款临时表状态大数据性能优化

 _sqlSugarClient.Fastest<PM_PO_PAYMENT>()

     .BulkUpdate(paysList,new string[] {"P_ID"}, new string[] { "P_SYNC_DATE", "P_SYNC_STATE" });


报错如下

UPDATE (SELECT  TM."P_SYNC_DATE" TMP_SYNC_DATE,TE."P_SYNC_DATE" TEP_SYNC_DATE, TM."P_SYNC_STATE" TMP_SYNC_STATE,TE."P_SYNC_STATE" TEP_SYNC_STATE  FROM "PM_PO_PAYMENT" TM,Temp1879451010729119744 TE WHERE TM."P_ID"=TE."P_ID")SET TMP_SYNC_DATE=TEP_SYNC_DATE,TMP_SYNC_STATE=TEP_SYNC_STATE

ORA-30926: 无法在源表中获得一组稳定的行


在数据库中检查过数据,没有主键字段重复的

热忱回答7

  • 如果使用这种方法,不能百分百修改。1000条数据可能只有300多条修改成功

    await _sqlSugarClient.Utilities.PageEachAsync(paysList, 1000, async pageList =>

    {

        var stgList = await _sqlSugarClient.Storageable(pageList).ToStorageAsync();

        updatepayNum += await stgList.AsUpdateable.ExecuteCommandAsync();

    });


    0 回复
  • fate sta fate sta VIP0
    2025/1/15

    @༺༒༻:这个是有可能的 , ID不存在就不会处理

    0 回复
  • fate sta fate sta VIP0
    2025/1/15

    image.png

    0 回复
  • @fate sta:我检查过了,ID是存在的,但是执行更新不成功。

    使用BulkUpdate报错,无法在源表中获得一组稳定的行


    0 回复
  • fate sta fate sta VIP0
    2025/1/16

    https://www.donet5.com/Home/Doc?typeId=2366

    按模版写个DEMO自测,有问题发出DEMO 删掉OBJ和BIN打包上传

    0 回复
  • @fate sta:处理了,不是ID不存在,而是ID重复了

    0 回复
  • fate sta fate sta VIP0
    2025/1/16

    传给ORM需要先去重在传给ORM

    0 回复