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

时间:2019-01-26 18:34:57

标签: sql postgresql

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

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

谢谢。

3 个答案:

答案 0 :(得分:0)

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

但是,您可以使它们成为同一 transaction 的一部分,以便它们都发生或都没有发生,因此您不会在INSERT成功但最终失败的情况下结束更新失败

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

docker-compose -f /somedir/my-docker-compose.yml pull 
docker-compose -f /somedir/my-docker-compose.yml up -d 

实际上,with i as ( INSERT INTO transactions (quantity) VALUES (2) RETURNING * ) UPDATE items SET stock = 5 WHERE id = 1; 子句使您可以使用returninginsert中的值。在Postgres中,这种构造非常方便。