如果项目 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的主要内容,如果未能解决你的问题,请参考以下文章

检查值是不是存在的数组列表,如果存在则将 1 添加到字符串

asp.net:更改列表框项目的颜色

如果使用 php (laravel) 未定义数组元素,则将 null 插入数据库

如果它属于列表,则将列表列转换为 True/False 列

MySQL 触发器 - 复制新的。插入的数据与现有的列值进行比较,如果它们匹配,则将它们插入到其他表中

SQL 语法从表中选择某些内容,如果结果不存在,则将结果插入新表中