Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用生成的UUID更新列_Sql_Postgresql - Fatal编程技术网

Sql 使用生成的UUID更新列

Sql 使用生成的UUID更新列,sql,postgresql,Sql,Postgresql,如何使用在每行上具有不同值的生成UUID更新列值 UPDATE TABLE SET id = replace(cast(uuid_in(md5(now()::text)::cstring) as varchar), '-', ''); 我使用了该代码,但导致id列上的每一行都具有相同的值。谢谢 更新 replace(cast(uuid_in(md5(now()::text)::cstring) as varchar), '-', '') 此行返回的内容类似于:414079B5C09

如何使用在每行上具有不同值的生成UUID更新列值

UPDATE TABLE 
    SET id = replace(cast(uuid_in(md5(now()::text)::cstring) as varchar), '-', '');
我使用了该代码,但导致
id
列上的每一行都具有相同的值。谢谢

更新

replace(cast(uuid_in(md5(now()::text)::cstring) as varchar), '-', '')
此行返回的内容类似于:414079B5C096F26A6E8F1880E2C

假设我有这张桌子:

ID ColumnA
1  testA
2  testB
3  testC
我想更新ID列上的每个值,如下所示:

ID                                ColumnA
414079b5c096f2defa6a4ce8f1880e2c  testA
414079b5c096f2defa6a4ce8f1881f3d  testB
414079b5c096f2defa6a4ce8f1882g4e  testC
但我从该查询中得到的是,ID列上的每个值都具有相同的值。

now()
返回事务开始时的时间

您想使用
clock\u timestamp()

引自手册:

clock\u timestamp()
返回实际的当前时间,因此即使在单个SQL命令中,其值也会更改

手册中的更多详细信息:



顺便说一句:Postgres已经有了内置的UUID生成功能。您可能也想看一看:

谢谢,但我想插入从查询生成的UUID值,而不是时间戳。中的函数
UUID\u做什么?它如何生成UUID?我假设它是基于传递的
now()
值来实现的,该值在语句运行期间不会更改,因此会将相同的值传递给您的函数,我假设该函数将生成相同的UUID。如果情况并非如此,您需要提供有关此函数正在执行的操作的更多详细信息。你说得对。谢谢,我现在已将
更改为
时钟时间戳()
,并且成功了!:)