PostgreSQL - 在存储过程中多次插入

数数

我有一个包含辅助实体列表的客户端实体,这在数据库上表示为外键约束。

客户端创建形式允许一次创建主实体及其子实体,因此在 DB 端可能必须在一个事务中同时保存一个新的主实体和一些新的子实体。出于这个原因,我想使用存储过程 DB-side,最直接的方法似乎是将主实体的字段作为参数传递,子实体作为某种集合参数(可能是 json 字符串,以说明子实体数据的异质性)。

在我的存储过程中,首先我会保存主实体,然后我会保存子实体,可能会使用一个新生成的主实体 ID(据我所知,过程本身就是一个事务,写入后失败主要实体将回滚所述插入/更新)。

我的问题在于保存子实体(从这里开始只是“实体”)。虽然我明白,对于现有实体我需要自己运行每个更新,但我想对新实体使用多行插入语法。出于这个原因,我想构建一个准备好的语句,我可以在其中增加插入元组的列表,因为实体列表的长度可能会有所不同,如INSERT INTO ... VALUES <tuple1>, <tuple2>, ...,痛苦来了......

当然,最简单的方法是连接每个实体的原始值以构建查询字符串,这就是 SQL 注入。

另一方面,虽然我可以使用 $ 符号构建插入语句,但在执行它时会遇到问题,连接参数,即:

-- prepare insert statement stmt

EXECUTE stmt USING <???> -- variable number of parameters to wire, 
                         -- I don't know how to work around it.

有没有办法使用单个多行插入,或者我应该回退到一个一个地插入值?我认为多行插入实际上并不只是重复执行单行插入,而且与逐行插入相比,使用它会有一些好处。当然,我宁愿避免扭曲的变通方法,这些变通方法会减慢操作速度,超出多行插入带来的好处。

劳伦兹·阿尔伯

您可以将元组打包在 a 中json[]并在INSERT语句中解析它们,但我真的不明白这一点。

我只会INSERT为每个实体运行单行语句。

我猜你担心性能,但也许所有的解析和解析都会超过在单个语句中插入所有内容的优势。

除此之外,我希望INSERT通过循环中的简单s使代码更清晰、更易于维护

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PostgreSQL存储过程中的相同查询

来自分类Dev

PostgreSQL,在存储过程中存储多个变量

来自分类Dev

PostgreSQL,在存储过程中存储多个变量

来自分类Dev

在PostgreSQL中的存储过程中创建静态数组

来自分类Dev

在PostgreSQL中的存储过程中创建静态数组

来自分类Dev

您可以在postgresql的存储过程中的插入语句中的临时行上引用聚合函数吗?

来自分类Dev

在Postgresql存储的函数/过程中定义全局常量?

来自分类Dev

SQL Server存储过程中的Postgresql函数

来自分类Dev

将数据插入Postgresql的存储过程

来自分类Dev

将多个变量初始化为Postgresql存储过程中的记录

来自分类Dev

如何使用PostgreSQL中的存储过程将数据插入表中

来自分类Dev

存储过程中的原子插入

来自分类Dev

SQL / PostgreSQL-在查询中观察到的错误没有被存储过程中的“ EXCEPTION”块捕获

来自分类Dev

扩展PostgreSQL存储过程

来自分类Dev

PHP + PostGresql +存储过程

来自分类Dev

Postgresql 存储过程调试

来自分类常见问题

在PySpark中执行Postgresql存储过程

来自分类Dev

Postgresql中的存储过程返回重复的列

来自分类Dev

在PySpark中执行Postgresql存储过程

来自分类Dev

Postgresql中的存储过程返回重复的列

来自分类Dev

在 PostgreSQL 9.2.8 中调度存储过程

来自分类Dev

PostgreSQL:在过程中返回选择语句

来自分类Dev

如何加快存储过程中的迭代插入过程?

来自分类Dev

如何加快存储过程中的迭代插入过程?

来自分类Dev

在存储过程中的批量/批量插入中绑定参数

来自分类Dev

在 postgresql 的存储过程中使用变量来添加分区

来自分类Dev

如何调试postgresql存储过程?

来自分类Dev

从Hibernate调用postgreSQL存储过程

来自分类Dev

Ruby Grape POSTGRESQL 存储过程

Related 相关文章

  1. 1

    PostgreSQL存储过程中的相同查询

  2. 2

    PostgreSQL,在存储过程中存储多个变量

  3. 3

    PostgreSQL,在存储过程中存储多个变量

  4. 4

    在PostgreSQL中的存储过程中创建静态数组

  5. 5

    在PostgreSQL中的存储过程中创建静态数组

  6. 6

    您可以在postgresql的存储过程中的插入语句中的临时行上引用聚合函数吗?

  7. 7

    在Postgresql存储的函数/过程中定义全局常量?

  8. 8

    SQL Server存储过程中的Postgresql函数

  9. 9

    将数据插入Postgresql的存储过程

  10. 10

    将多个变量初始化为Postgresql存储过程中的记录

  11. 11

    如何使用PostgreSQL中的存储过程将数据插入表中

  12. 12

    存储过程中的原子插入

  13. 13

    SQL / PostgreSQL-在查询中观察到的错误没有被存储过程中的“ EXCEPTION”块捕获

  14. 14

    扩展PostgreSQL存储过程

  15. 15

    PHP + PostGresql +存储过程

  16. 16

    Postgresql 存储过程调试

  17. 17

    在PySpark中执行Postgresql存储过程

  18. 18

    Postgresql中的存储过程返回重复的列

  19. 19

    在PySpark中执行Postgresql存储过程

  20. 20

    Postgresql中的存储过程返回重复的列

  21. 21

    在 PostgreSQL 9.2.8 中调度存储过程

  22. 22

    PostgreSQL:在过程中返回选择语句

  23. 23

    如何加快存储过程中的迭代插入过程?

  24. 24

    如何加快存储过程中的迭代插入过程?

  25. 25

    在存储过程中的批量/批量插入中绑定参数

  26. 26

    在 postgresql 的存储过程中使用变量来添加分区

  27. 27

    如何调试postgresql存储过程?

  28. 28

    从Hibernate调用postgreSQL存储过程

  29. 29

    Ruby Grape POSTGRESQL 存储过程

热门标签

归档