我在 postgresql 上遇到问题,我认为 postgresql 中有一个错误,我错误地实现了一些东西。
有一个表包括colmn1(primary key)
, colmn2(unique)
, colmn3
, ...
插入一行后,如果我尝试使用现有的另一次插入colmn2
正如我所预期的,我收到了重复值错误。但在这次失败的尝试之后colmn1
的下一个值是
尽管没有插入,但增加了 1,所以我得到的行具有 id 序列,例如,1,2,4,6,9.(3,5,6,7,8
进行不成功的试验)。
我需要那些可以解释这种奇怪行为的人的帮助。
此信息可能有用:我使用了“create unique index on tableName (lower(column1))
" 查询设置唯一约束。
See the PostgreSQL 序列常见问题解答 http://www.neilconway.org/docs/sequences/:
序列旨在生成唯一标识符,而不是
必须是严格连续的标识符。如果两个
并发数据库客户端都尝试从
序列(使用nextval()),每个客户端都会得到不同的序列
价值。如果这些客户之一随后中止他们的交易,
为该客户端生成的序列值将不被使用,
在序列中创建间隙。
在不影响性能的情况下,这个问题很难轻易解决
惩罚。欲了解更多信息,请参阅艾琳·穆斯坦 (Elein Mustein) 的“主键的无缝序列 http://www.varlena.com/GeneralBits/130.php” 在 General Bits 时事通讯中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)