当前位置: 首页 > news >正文

mysql的一个缺点

最近再移植一个从oracle转mysql的项目,喜提一个报错:

You can't specify target table 'A016' for update in FROM clause 

对应的程序代码:

public void setCurrent(String setId, String pk, String userId) throws SysException {String[] sql = new String[2];sql[0] = "update " + setId + " set " + setId + "000='00900' where id in (select id from " + setId + " where subid='" + pk + "')";sql[1] = "update " + setId + " set " + setId + "000='00901' where  subid='" + pk + "'";api.batchExecuteSql(sql);
}

sql[0]报的错。在oracle sqlserver里都没有错。mysql不行。核心问题是mysql不允许在update的where语句里出现要更新的表。

针对这种情况只能先把值取出来,然后在执行。

public void setCurrent(String setId, String pk, String userId) throws SysException {String id=api.queryForString("select id from " + setId + " where subid='" + pk + "'");String[] sql = new String[2];sql[0] = "update " + setId + " set " + setId + "000='00900' where id ='"+id+"'";sql[1] = "update " + setId + " set " + setId + "000='00901' where  subid='" + pk + "'";api.batchExecuteSql(sql);
}

相关文章:

  • C++.神经网络与深度学习(赶工版)(会二次修改)
  • e.g. ‘django.db.models.BigAutoField‘.
  • Nginx核心功能及同类产品对比
  • 什么是物联网 IoT 平台?
  • 非异步信号安全函数
  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的低集中度市场运营策略研究
  • Android多媒体——媒体解码流程分析(十四)
  • unordered_map和unordered的介绍和使用
  • 记录算法笔记(20025.5.14)对称二叉树
  • 【教程】Docker更换存储位置
  • 【机器学习】支持向量回归(SVR)从入门到实战:原理、实现与优化指南
  • Redis的热Key问题如何解决?
  • PostgREST:无需后端 快速构建RESTful API服务
  • 【MySQL】日志缓冲区详解 以及 InnoDB内存结构总结
  • TrimAl介绍
  • RPM 包制作备查 SRPM 包编译
  • 高并发内存池(四):Page Cache结构设计
  • 青少年编程与数学 02-019 Rust 编程基础 12课题、所有权系统
  • AI开发者的算力革命:GpuGeek平台全景实战指南(大模型训练/推理/微调全解析)
  • NLP的基本流程概述
  • 气候多米诺:厄尔尼诺与东南亚跨境害虫或威胁中国粮食安全
  • 秦洪看盘|预期改善,或迎来新的增量资金
  • 技术派|巴基斯坦导弹:让印度保持克制的“定海神针”?
  • 当创业热土遇上年轻气息,上海南汇新城发展如何再发力?
  • 新华每日电讯:给“男性妇科病论文”开一剂复方药
  • 第1现场 | 50多年来首次!印度举行大规模民防演习