如果项目 postgresql,则将列表插入 SQL
Posted
技术标签:
【中文标题】如果项目 postgresql,则将列表插入 SQL【英文标题】:Insert into SQL a List if items postgresql 【发布时间】:2021-09-14 13:35:52 【问题描述】:我有一种情况需要插入 进入多个表,最后一个表将取决于它之前的表以及一些额外的项目列表。我正在将 pg 与 node 和 javascript 一起使用。
表 1:
insert into col1, col2 values (1, 2) return col1 as table1_id
表 2:
insert into col1 col2 values ( table1_id, val1),
(table1_id, val2),
.
.
.
.
(table1_id, val_n)
我在这里看到有些人这样做了,但最后一个表中只有 1 行,但我将有一个项目列表作为 val1....valn... 与第一次插入生成的 id 合并在 table1 中并添加到我拥有的列表中。这将是一个关系表,其中包含属于 table1 中记录的项目列表。
任何线索将不胜感激..
谢谢
【问题讨论】:
你能帮我们写出两个插入语句吗?我想确保我了解发生了什么 【参考方案1】:我认为你应该在 postgres 中创建一个“dao”层。一个带有所有参数的 Postgres 函数,并返回您应该在前端拥有的内容。
这个 postgres 函数插入你想要的所有行。
这样你可以解决你的问题:
CREATE OR REPLACE FUNCTION function_what_i_want(val1 integer, val2 integer, my_argument integer[])
RETURNS my_schema_and_table[] AS
$BODY$
DECLARE
result my_schema_and_table[];
BEGIN
insert into table1(col1,col2,col3) VALUES (nextval('seq1'),val1, val2);
insert into table2(c1,c2)
select currval('seq1'),m.c2
from unnest(my_argument) m(c2);
END;
我不知道你的项目。如果您不想在此表上进行搜索,也许最好将此列表存储在 json 中。
【讨论】:
以上是关于如果项目 postgresql,则将列表插入 SQL的主要内容,如果未能解决你的问题,请参考以下文章
如果使用 php (laravel) 未定义数组元素,则将 null 插入数据库