我需要在一个表中插入一行,用uuid_generate_v4()
生成它的键,并且我需要在另一个表中的后续插入中将该键用作外键,例如:
\set generated_id uuid_generate_v4()
INSERT INTO
table1(id)
VALUES(:generated_id);
INSERT INTO
table2(id, table1_id)
VALUES(uuid_generate_v4(), :generated_id);
但当我读到
:generated_id
时,每次它给我一个不同的值,就像每次我试图读它时它都在重新计算。是否可以要求
\set
不再重新计算uuid_generate_v4()
?否则,这怎么可能实现呢? 最佳答案
您可以使用psql
's\gset
为查询结果设置变量:
SELECT uuid_generate_v4() AS generated_id \gset
这将设置变量
generated_id
。要在脚本中使用变量,请按如下方式引用:
:'generated_id'
关于postgresql - 如何在Postgresql脚本中存储常量值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57764289/