【发布时间】:2012-10-24 22:27:43
【问题描述】:
我无法通过 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 输出都不能从事务块中取出吗?
【问题讨论】:
-
你通常会
SELECT "column", the_primary_ky FROM ...然后UPDATE ... SET ... WHERE the_primary_key = value_returned_from_select。 -
这取决于你打算做什么。这里不是这种情况