如何将此查询合并为单个查询?
INSERT INTO transactions (quantity) VALUES (2);
UPDATE items SET stock = 5 WHERE id = 1;
谢谢。
答案 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;
子句使您可以使用returning
中insert
中的值。在Postgres中,这种构造非常方便。