我在节点服务器中有一个字符串数组。我想将每个字符串作为标签插入 table1。每个标签行有tag_id和tag_text,其中tag_id为序列值,tag_text为对应的字符串。
如果这些标签不存在,我想插入它们,并返回所有标签的 id,无论每个标签是否已插入或已存在。是否可以在单个查询中执行此操作?
此外,我想使用从上面的查询返回的 id,并将每个 id 与一个常量值(在节点服务器中定义)一起插入另一个表(table2)中。是否有可能在单个事务中完成所有这些操作?如果是这样,如何?
答案 0 :(得分:0)
您可以使用返回子句:
insert into table1 (tag)
select tag
from unnest($tag_array) tag
on conflict (tag)
do update set tag = excluded.tag
returning (*);
这应该返回所有标签,无论它们是否在表格中。