我需要在一个表中插入一行,用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/

10-13 00:47