繁体   English   中英

如何将插入查询和更新查询与不同的表合并到单个查询中?

[英]How to combine insert query and update query with different tables into single query?

如何将此查询合并为单个查询?

INSERT INTO transactions (quantity) VALUES (2);
UPDATE items SET stock = 5 WHERE id = 1;

谢谢。

简单的答案? 你不能 没有SQL命令允许您插入一个表并同时更新另一个表。

但是,您可以使它们成为同一事务的一部分,以使它们都发生或不发生,因此,您不会最终遇到INSERT成功但UPDATE失败的情况

您可以同时更新两个表,但是无法在一个查询中更新一个表并插入另一个表。 但是漏洞会使用带有启动事务的过程,例如@Caius Jard。

在Postgres中,您可以使用可更新的CTE:

with i as (
    INSERT INTO transactions (quantity)
        VALUES (2)
        RETURNING *
    )
UPDATE items
SET stock = 5
WHERE id = 1;

returning子句实际上将允许您使用update insert值。 在Postgres中,此构造非常方便。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM