当前位置: 首页 > 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);
}

http://www.dtcms.com/a/189469.html

相关文章:

  • 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的基本流程概述
  • 深度剖析 GpuGeek 实例:GpuGeek/Qwen3-32B 模型 API 调用实践与性能测试洞察
  • LeetCode 热题 100_颜色分类(98_75_中等_C++)(技巧)(计数;双指针)
  • Shell和Bash介绍
  • 学习threejs,使用Physijs物理引擎,通过控制重力,实现多米诺骨牌效果
  • Data Mining|缺省值补全实验
  • 【PmHub后端篇】PmHub集成 Sentinel+OpenFeign实现网关流量控制与服务降级
  • 【拥抱AI】Deer-Flow字节跳动开源的多智能体深度研究框架
  • More Effective C++:改善编程与设计(上)
  • java连数据库
  • AI-02a5a5.神经网络-与学习相关的技巧-权重初始值