我无法通过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
输出都不能退出事务块吗?
答案 0 :(得分:1)
这将从更新的行返回所有“列”的值:
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