问题标签 [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.
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
sql-server - 由于更新冲突,快照隔离事务中止
以下陈述:
给了我这个 SQL 错误 3960:
由于更新冲突,快照隔离事务中止。您不能使用快照隔离直接或间接访问数据库“myDatabase”中的表“dbo.Companies”来更新、删除或插入已被另一个事务修改或删除的行。重试事务或更改更新/删除语句的隔离级别。
据我了解,从错误消息中,我不应该dbo.Companies
在另一个连接正在修改期间更新、删除或插入表dbo.Companies
。
但是为什么当我向另一个表dbo.Changes
(具有外键dbo.Companies
)插入新行并且我没有删除引用的行时会发生这种情况dbo.Companies
,但我只是更新行dbo.Companies
而不是主键?这应该可以正常工作,不是吗?(这是 SQL Server 中的错误吗?)
更新:
表格如下所示:
第二次更新正在做:
hibernate - 如何使用 JPA/Hibernate 避免“双重创建”竞争条件
我处于以下情况。
有几个线程可以读取/更新MonthlySales
持久对象。问题是这些对象可能不存在并且必须根据请求动态创建。
因此,两个不同的线程最终创建了对应于相同键(即具有相同 ID)的实体,因此其中一个线程无法提交。我不希望这种情况发生。我希望两个线程中的一个赢得比赛,另一个松散,等到另一个线程创建了对象。
换句话说,我确实想做序列化交易。我应该放置一个显式的 Java 锁(即synchronized
块)吗?
我当前的代码如下:
你能帮助我吗?
database - 不可重复读和幻读有什么区别?
不可重复读和幻读有什么区别?
我已经阅读了来自 Wikipedia 的 Isolation (database systems) 文章,但我有一些疑问。在下面的例子中,会发生什么:不可重复读取和幻读?
交易A 输出: 交易 B 交易A另一个疑问是,在上面的例子中,应该使用哪个隔离级别?为什么?
multithreading - Postgres 中的原子更新 .. SELECT
我正在建立一种排队机制。有需要处理的数据行和一个状态标志。我正在使用一个update .. returning
子句来管理它:
嵌套选择部分是否与更新相同,或者我在这里有竞争条件?如果是这样,内部选择是否需要是 a select for update
?
mysql - 如何实现一个事务读取的行不允许另一个事务读取的情况?
如何实现一个事务读取的行不允许另一个事务读取的情况?
从我的一张带有 A-F 列的表中,我需要选择max(columnA)
. 使用最大值并基于一些计算,我将不得不执行其他插入语句。
使用可序列化的隔离级别,2 个事务正在读取相同的最大值。这会导致一个事务的锁等待和另一个事务的死锁。
sql - 如何防止 SQL 同时运行事务
我注意到 MS SQL 可能在前一个事务完成(或提交)之前开始另一个事务。有没有一种方法可以确保交易必须在下一个交易开始之前首先完成?
我的问题是我想在 SQL INSERT 之后几乎立即执行 SQL SELECT。我现在看到的是;当 SELECT 语句运行时;它不会返回(非常)最近插入的数据。
当我使用 SQL 分析器跟踪此场景时,我注意到 SQL INSERT 和 SELECT 同时执行,因为 SELECT 发生在 INSERT 完成之前。
有没有办法解决我的这个问题?谢谢!
sql - [在 Postgres 中] 仍然可以读取锁定的行吗?
如果我SELECT... FOR UPDATE
在事务中有一行,它显然会阻止该行被写入,但它是否也不允许读取?我希望仍然能够从行中读取,所以如果答案是肯定的,你能提供一个解决方案来解决这个问题吗?
sql - 如果在锁定行的父级上尝试级联删除,PostgreSQL 会发生什么?
我有一个表foo_bar
和另一个表spam_eggs
,fb
外键指向foo_bar
. spam_eggs
当删除相关行时,行将被级联spam_eggs.fb
删除。
我正在使用 PostgreSQL。
在一个事务中,我曾经SELECT... FOR UPDATE
锁定spam_eggs
一行。在此事务期间,另一个事务已尝试DELETE FROM...
与foo_bar
我的锁定行相关。这会触发错误,还是我锁定的行会导致查询阻塞,直到我的原始更新事务结束?
sql - 并发值修改会影响 PostgreSQL 9.1 中的单选吗?
考虑在 PostgreSQL 9.1(或 9.2)中执行的以下查询:
假设这是一个运行时间相当长的查询(例如,需要一分钟)。
如果在查询开始时有 500 万条记录bar = true
保留,并且在另一个事务中的此查询期间,foo
表中添加和删除了行,并且对于某些现有行,对bar
字段进行了更新。
这会影响上面显示的选择查询的结果吗?
我知道单个事务中不同语句之间的事务隔离和可见性,但是正在运行的单个语句呢?