gpt4 book ai didi

postgresql - 如何在事务中获取 SELECT 语句的结果?

转载 作者:行者123 更新时间:2023-11-29 11:37:09 25 4
gpt4 key购买 nike

我无法通过 PostgreSQL 文档、Web 甚至 StackOverflow 获得关于这个简单问题的信息...我一定不理解这里的重要内容。

我正在 PostgreSQL 中进行一个简单的 SELECT/UPDATE 事务:

START TRANSACTION;
SELECT "column" FROM "table" WHERE "criterion" = 'value' AND "activated" = true;
UPDATE "table" SET "activated" = false WHERE "criterion" = 'value';
COMMIT

基本上,当列的 activated 状态为 true 时,我需要获取该列的值,然后将其停用。PostgreSQL 告诉我有 1 行结果已被取消

如果我执行以下操作(基本上是没有 UPDATE 语句的相同事务),也会发生同样的情况:

START TRANSACTION;
SELECT "column" FROM "table" WHERE "criterion" = 'value' AND "activated" = true;
COMMIT

我不了解交易的哪些方面?任何 SELECT 输出都不能从事务 block 中取出吗?

最佳答案

这将从更新的行中返回所有“列”的值:

UPDATE "table" SET "activated" = false WHERE "criterion" = 'value' AND "activated" = true
returning "column";

与交易无关。

returning 将像发出 select 一样返回值:

insert into foo (ticket, row, archived) values (3,7,true) returning *;
ticket | row | archived
--------+-----+----------
3 | 7 | t

update foo
set archived = true
where not archived
returning *;
ticket | row | archived
--------+-----+----------
2 | 5 | t

关于postgresql - 如何在事务中获取 SELECT 语句的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13058790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com