gpt4 book ai didi

java - 未提交的数据库事务和自增列

转载 作者:可可西里 更新时间:2023-11-01 06:31:40 25 4
gpt4 key购买 nike

我今天遇到了一些奇怪的行为,想知道这是预期的还是标准的。我们正在对 MySQL5 使用 Hibernate。在编写代码的过程中,我忘记了关闭事务,我想其他人可以理解。

当我最终关闭事务、运行代码并检查表格时,我注意到以下内容。每次我都错误地运行我的代码而没有关闭事务,因此不会导致插入实际行,但会增加自动递增代理主键值,因此我有一个间隙(即没有 id 字段值为的行751 到 762)。

这是预期的还是标准的行为?它可能因数据库而异?和/或 Hibernate 自己的事务抽象是否对此有一些可能的影响?

最佳答案

是的,这是预期的。

如果你想一想:数据库还能做什么?如果您增加该列,然后将其用作同一事务中其他插入的外键,并且在您这样做时其他人提交了,那么他们将无法使用您的值。你会得到一个差距。

Oracle 等数据库中的序列的工作方式大致相同。一旦请求了一个特定的值,它是否被提交都无关紧要。它永远不会被重复使用。序列也不是绝对有序的。

关于java - 未提交的数据库事务和自增列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1399931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com