首页 > 解决方案 > 如果项目 postgresql,则将列表插入 SQL

问题描述

我有一种情况,我需要插入多个表,最后一个表将取决于它之前的表以及一些额外的项目列表。我正在将 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... 与 table1 中的第一个插入生成的 id 合并添加到我的列表中。这将是一个关系表,其中包含属于 table1 中记录的项目列表。

任何线索将不胜感激..

谢谢

标签: javascriptsqlpostgresql

解决方案


我认为你应该在 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 中。


推荐阅读