我在我的一个表中设置了一个UUID约束作为我的ID字段,但是尽管如此(我认为是由于uuid_generate_v4仅为每个事务创建UUID?),当我将CSV数据加载到我的表中时,表中的每一行都被赋予了相同的UUID。
我希望能够更改此设置,并为每行指定一个唯一的UUID,无论运行update monitors_nontest set id = uuid_generate_v1()
同样,每行只生成一个UUID。
如何更改此命令,使每行都获得不同的UUID?
我在我的一个表中设置了一个UUID约束作为我的ID字段,但是尽管如此(我认为是由于uuid_generate_v4仅为每个事务创建UUID?),当我将CSV数据加载到我的表中时,表中的每一行都被赋予了相同的UUID。
我希望能够更改此设置,并为每行指定一个唯一的UUID,无论运行update monitors_nontest set id = uuid_generate_v1()
同样,每行只生成一个UUID。
如何更改此命令,使每行都获得不同的UUID?
2条答案
按热度按时间afdcj2ne1#
只是一种可能性。你实际上是如何生成uuid的?函数uuid_generate_v1()实际上每次被调用时都会生成一个不同的值。但每次调用时都会生成一个键。看起来如果在sub select中调用,Postgres优化器可能会觉得它可以绕过调用并使用缓存的结果。尝试以下操作。
不幸的是,我找不到一个有uuid_generate_v1()函数的fiddle处理器,也找不到工作完全相同的uuid_generate_v4()函数。
f1tvaqid2#
我有不完全相同的问题,但类似的东西。我正在与pre-Postgres 13版本(所以我没有任何功能准备).
我有一个表,需要在表中插入新行,同时为每个新行生成一个新的UUID(v4)。
我到处找,但找不到任何W/O创建功能或安装扩展。
所以我这样做了:
这可以针对
UPDATE
查询进行调整。我希望它能对其他人有所帮助。