首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在副本上替换为simpleJdbcInsert

在副本上替换为simpleJdbcInsert
EN

Stack Overflow用户
提问于 2012-03-06 19:47:20
回答 2查看 1.4K关注 0票数 3

我在Mysql Server5.5的服务器端使用tomcat。

我使用Spring框架实现数据库连接。

我希望能够使用simpleJdbcInsert向表中插入一行。如果由于重复而导致插入失败,我希望它替换重复的行。

有没有办法做到这一点,或者我应该只使用jdbcTemplate,并使用"ON simpleJdbcInsert“语句创建我的on查询?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-06 20:08:53

从逻辑上讲,当存在双重主键时,就会发生重复。

因此,如果您正在使用传统的JDBC甚至Hibernate,那么在插入新的主键值之前,您应该检查是否已经存在相同的主键值。

但是,如果主键还没有设置,或者将由DBMS设置,则会出现不同的问题。

在JDBC中的

  1. ,同样你需要在插入新的之前通过查询来做旧风格的手动检查,但是在Hibernate中的
  2. ,你只需要更新它。如果没有重复项,Hibernate将创建新项,但如果有重复项,则将替换。
票数 1
EN

Stack Overflow用户

发布于 2021-01-25 20:30:05

,同样,您需要在插入新样式之前通过查询进行旧样式的手动检查,但是

这是不正确的-因为检查现有行和实际插入之间存在时间间隔,所以并行线程中的某些人可以同时插入具有相同键的行,您将获得DuplicateKeyException (如果我们讨论spring)。因此,您必须处理此异常,或者只使用诚实的SQL insert into ... on duplicate key ...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9583097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档