postgresql postgres是否保证为具有唯一约束和随机UUID默认值的列生成唯一UUID?

lbsnaicq  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(153)

给定一个这样的表:

CREATE TABLE the_table (
  the_uuid UUID NOT NULL UNIQUE DEFAULT gen_random_uuid()
  -- more columns
);

字符串
如果我们在the_uuid列中插入一个没有值的行,并且DBMS生成一个随机的UUID,postgres是否可以无缝地处理这种不太可能的情况,即它生成一个列中已经存在的UUID?
我们可以想象postgres可以重试随机生成的UUID,直到它得到一个不违反约束的UUID。但是如果postgres没有这样实现,就需要在外部处理这个问题。
对于数值类型,我们有一个SEQUENCE的想法,在某种程度上解决了这个问题,但我不知道UUID类型的模拟。
这个问题的许多读者会想评论或回答说,我担心的是一些不太可能发生的事情,我同意,但我仍然有兴趣更好地理解postgres处理这个问题的方式。

whitzsjs

whitzsjs1#

根据answer in DBA stack exchange,没有任何保证。
我不想抄袭答案并复制在这里,但海报似乎提供了一个令人信服的例子来证明这种行为。

相关问题