问题标签 [transaction-isolation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1285 浏览

java - ejb3 isolated (autonomous) transaction inside session bean

I'm using XA (2-phase) transaction. I want to log to one log-table through Log class and Entity Manager. My method inside EJB Session bean looks like:

I want to it in isolated (autonomous) transaction independent of any "outer" transaction. I have already tried to add @TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW) and @TransactionAttribute(value = TransactionAttributeType.NOT_SUPPORTED) before method name and does not work.

Before I call EJB3 method I create user transaction like:

I want to Log no matter if commit is done or not. How to?

Regards

0 投票
2 回答
20174 浏览

sql-server - 由于更新冲突,快照隔离事务中止

以下陈述:

给了我这个 SQL 错误 3960:

由于更新冲突,快照隔离事务中止。您不能使用快照隔离直接或间接访问数据库“myDatabase”中的表“dbo.Companies”来更新、删除或插入已被另一个事务修改或删除的行。重试事务或更改更新/删除语句的隔离级别。

据我了解,从错误消息中,我不应该dbo.Companies在另一个连接正在修改期间更新、删除或插入表dbo.Companies

但是为什么当我向另一个表dbo.Changes(具有外键dbo.Companies)插入新行并且我没有删除引用的行时会发生这种情况dbo.Companies,但我只是更新行dbo.Companies而不是主键?这应该可以正常工作,不是吗?(这是 SQL Server 中的错误吗?)

更新:

表格如下所示:

第二次更新正在做:

0 投票
1 回答
2552 浏览

hibernate - 如何使用 JPA/Hibernate 避免“双重创建”竞争条件

我处于以下情况。

有几个线程可以读取/更新MonthlySales持久对象。问题是这些对象可能不存在并且必须根据请求动态创建。
因此,两个不同的线程最终创建了对应于相同键(即具有相同 ID)的实体,因此其中一个线程无法提交。我不希望这种情况发生。我希望两个线程中的一个赢得比赛,另一个松散,等到另一个线程创建了对象。

换句话说,我确实想做序列化交易。我应该放置一个显式的 Java 锁(即synchronized块)吗?

我当前的代码如下:

你能帮助我吗?

0 投票
10 回答
121224 浏览

database - 不可重复读和幻读有什么区别?

不可重复读和幻读有什么区别?

我已经阅读了来自 Wikipedia 的 Isolation (database systems) 文章,但我有一些疑问。在下面的例子中,会发生什么:不可重复读取幻读

交易A 输出: 交易 B 交易A

另一个疑问是,在上面的例子中,应该使用哪个隔离级别?为什么?

0 投票
2 回答
24879 浏览

multithreading - Postgres 中的原子更新 .. SELECT

我正在建立一种排队机制。有需要处理的数据行和一个状态标志。我正在使用一个update .. returning子句来管理它:

嵌套选择部分是否与更新相同,或者我在这里有竞争条件?如果是这样,内部选择是否需要是 a select for update

0 投票
1 回答
107 浏览

mysql - 如何实现一个事务读取的行不允许另一个事务读取的情况?

如何实现一个事务读取的行不允许另一个事务读取的情况?

从我的一张带有 A-F 列的表中,我需要选择max(columnA). 使用最大值并基于一些计算,我将不得不执行其他插入语句。

使用可序列化的隔离级别,2 个事务正在读取相同的最大值。这会导致一个事务的锁等待和另一个事务的死锁。

0 投票
3 回答
212 浏览

sql - 如何防止 SQL 同时运行事务

我注意到 MS SQL 可能在前一个事务完成(或提交)之前开始另一个事务。有没有一种方法可以确保交易必须在下一个交易开始之前首先完成?

我的问题是我想在 SQL INSERT 之后几乎立即执行 SQL SELECT。我现在看到的是;当 SELECT 语句运行时;它不会返回(非常)最近插入的数据。

当我使用 SQL 分析器跟踪此场景时,我注意到 SQL INSERT 和 SELECT 同时执行,因为 SELECT 发生在 INSERT 完成之前。

有没有办法解决我的这个问题?谢谢!

0 投票
1 回答
9819 浏览

sql - [在 Postgres 中] 仍然可以读取锁定的行吗?

如果我SELECT... FOR UPDATE在事务中有一行,它显然会阻止该行被写入,但它是否也不允许读取?我希望仍然能够从行中读取,所以如果答案是肯定的,你能提供一个解决方案来解决这个问题吗?

0 投票
1 回答
1442 浏览

sql - 如果在锁定行的父级上尝试级联删除,PostgreSQL 会发生什么?

我有一个表foo_bar和另一个表spam_eggsfb外键指向foo_bar. spam_eggs当删除相关行时,行将被级联spam_eggs.fb删除。

我正在使用 PostgreSQL。

在一个事务中,我曾经SELECT... FOR UPDATE锁定spam_eggs一行。在此事务期间,另一个事务已尝试DELETE FROM...foo_bar我的锁定行相关。这会触发错误,还是我锁定的行会导致查询阻塞,直到我的原始更新事务结束?

0 投票
2 回答
223 浏览

sql - 并发值修改会影响 PostgreSQL 9.1 中的单选吗?

考虑在 PostgreSQL 9.1(或 9.2)中执行的以下查询:

假设这是一个运行时间相当长的查询(例如,需要一分钟)。

如果在查询开始时有 500 万条记录bar = true保留,并且在另一个事务中的此查询期间,foo表中添加和删除了行,并且对于某些现有行,对bar字段进行了更新。

这会影响上面显示的选择查询的结果吗?

我知道单个事务中不同语句之间的事务隔离和可见性,但是正在运行的单个语句呢?