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

Coe*_*aar 5 postgresql uuid

给定一个像这样的表:

CREATE TABLE the_table (
  the_uuid UUID NOT NULL UNIQUE DEFAULT gen_random_uuid()
  -- more columns
);
Run Code Online (Sandbox Code Playgroud)

如果我们插入没有列值的行the_uuid,并且 DBMS 生成随机 UUID,postgres 是否可以无缝处理生成列中已存在的 UUID 的不太可能的情况?

人们会想象 postgres 可以重试随机 UUID 生成,直到它获得不违反约束的 UUID。但如果 postgres 不是以这种方式实现的,则需要在外部处理这个问题。

对于数字类型,我们有 a 的想法SEQUENCE可以在一定程度上解决这个问题,但我不知道该类型的类似物UUID

这个问题的许多读者会想评论或回答说我担心一些不太可能发生的事情,我同意,但我仍然有兴趣更好地理解 postgres 处理这个问题的方式。

Ste*_*dis 1

根据DBA堆栈交换中的回答,不,没有任何保证。

我不想抄袭答案并将其复制到这里,但海报似乎提供了一个令人信服的例子来证明这种行为。不过我自己没有尝试过。