【问题标题】:Postgres Add and Remove in Single QueryPostgres 在单个查询中添加和删除
【发布时间】:2022-12-18 15:18:54
【问题描述】:

我正在使用 Postgres。我有三个表:图片,标签, 和图片标签

为简单起见,以下是所有表格列:

pictures.id
pictures.name
tags.id
tags.name
picture_tags.pictureId
picture_tags.tagId

一张图片可以有很多标签。当我编辑图片记录时,我希望能够在单个查询中添加和删除 picture_tags。

现在我通过 picture.id 查询 picture_tags 表,然后使用结果来确定我必须创建哪些 picture_tag 记录以及删除哪些记录。然后我运行两个单独的调用,添加和删除。三个电话很多,如果可能的话,我试图在一个电话中完成所有这些工作。我假设在一次调用中执行此操作性能更高?

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    执行 3 个单独的操作本身并没有错。然而,你应该在一个单一的交易.实际上,如果你直接对 Postgres 执行你的命令,你会想使用:

    BEGIN TRANSACTION;
    
    -- your inserts/updates/deletes here
    
    END TRANSACTION;
    

    如果您从应用程序层发出调用,您还需要确保命令在单个事务内执行。例如,在 Java Spring 中,您可以将所有 3 个操作放在一个方法中,然后用 @Transactional 对其进行注释。

    【讨论】:

      猜你喜欢
      • 2019-07-26
      • 2011-04-18
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多