sql - 使用事务更新

标签 sql database spring postgresql

我将 Spring 与 PostgreSQL 一起使用,我尝试使用如下代码来执行某种 UPSERT:

jt.update("delete from A where id = 1")
jt.update("insert into A (id, value) values (1, 100)")

包裹在事务中(使用 @Transactional)。

问题是,当有很多并发请求时,这段代码会失败并出现“重复键”错误,这意味着事务没有被隔离,或者...

我是否遗漏了有关交易运作方式的信息?我应该在这里使用不同的机制(例如线程同步)吗?

最佳答案

我写了一篇关于它的相当大的博客文章,所以即使我可能会因为链接而被否决,请阅读 this .

要点是事务在这里没有帮助(至少在默认情况下),虽然可以编写正确的更新插入,但实际上非常棘手。

关于sql - 使用事务更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17152860/

相关文章:

sql - 数据库抽象——支持多种语法

sql - 从sqlite数据库中删除重复行

mysql - count(distinct(person_id)) 不适用于 MySQL 数据库中的窗口函数

java.lang.NoSuchMethodError : org. hibernate.SessionFactory.openSession()Lorg/hibernate/Session;

java - 有没有支持韩语的Java SQL解析器?

SQL Server 2008 - 电子邮件通知

java - @请求参数 : Can not get the 2nd inputted request parameters

java - Spring mongodb 统计集合中的所有文档

mysql - 在考虑另一列的一列上选择 DISTINCT

sql - 避免在 MySQL 中进行全表扫描