it'*_*tch 5 sql postgresql uuid sql-update
uuid我为我的一张表添加了新列并安装了uuid-ossp扩展。现在我想更新所有现有记录并为这个新uuid列设置值。
我不想对 ADD COLUMN 使用 DEFAULT 回退,而是想在 UPDATE 语句中执行此操作,所以我有这样的内容:
UPDATE table_name SET uuid = (SELECT uuid_generate_v4());
Run Code Online (Sandbox Code Playgroud)
但我遇到的问题是为所有记录生成相同的 UUID。
有没有办法传递种子值或生成函数的东西或其他方法来强制生成的 UUID 是唯一的?
Tim*_*sen 11
您可以尝试修改 UUID 子查询,以便强制/诱骗 Postgres 为每个记录生成新的 UUID:
UPDATE table_name
SET uuid = uuid_generate_v4()
WHERE uuid IS NOT NULL;
Run Code Online (Sandbox Code Playgroud)
该WHERE子句只是一个虚拟子句,但可能会导致 Postgres 对每个记录调用一次 UUID 函数。
如果您uuid_generate_v4()在子查询中调用该函数,PostgreSQL 将假定该子查询只需调用一次,因为它不包含对周围查询的任何引用。因此,所有行都将更新为相同的uuid,这会失败。
如果删除子查询并仅保留函数调用,则将为每一行调用该函数,因为它是VOLATILE.
| 归档时间: |
|
| 查看次数: |
8655 次 |
| 最近记录: |