Ber*_*set 7 postgresql transactions
我无法通过 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
Run Code Online (Sandbox Code Playgroud)
基本上,我需要在其activated状态为时获取列的值,true然后将其停用。PostgreSQL 告诉我有 1 行结果已被取消
如果我执行以下操作(基本上没有UPDATE语句的相同事务),也会发生同样的情况:
START TRANSACTION;
SELECT "column" FROM "table" WHERE "criterion" = 'value' AND "activated" = true;
COMMIT
Run Code Online (Sandbox Code Playgroud)
我对交易有什么不了解?任何SELECT输出都不能从交易块中出来吗?
这将从更新的行中返回所有“列”的值:
UPDATE "table" SET "activated" = false WHERE "criterion" = 'value' AND "activated" = true
returning "column";
Run Code Online (Sandbox Code Playgroud)
与本次交易不存在关联关系。
returning将返回值,就像select发出 a 一样:
insert into foo (ticket, row, archived) values (3,7,true) returning *;
ticket | row | archived
--------+-----+----------
3 | 7 | t
Run Code Online (Sandbox Code Playgroud)
update foo
set archived = true
where not archived
returning *;
ticket | row | archived
--------+-----+----------
2 | 5 | t
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5907 次 |
| 最近记录: |