我检查了 PostgreSQL 文档https://www.postgresql.org/docs/current/sql-select.html并想知道为什么有这么多不支持 FOR UPDATE 的异常,例如
- 通过...分组
- 拥有
- 窗户
- 清楚的
- 联盟
- 相交
- 除了
是否有令人信服的逻辑原因,或者只是尚未实施?
我检查了 PostgreSQL 文档https://www.postgresql.org/docs/current/sql-select.html并想知道为什么有这么多不支持 FOR UPDATE 的异常,例如
是否有令人信服的逻辑原因,或者只是尚未实施?
我不确定你的意思
WINDOW
,但其他的对我来说很清楚:一旦你执行了这些 SQL 构造,结果集中的行不再对应于单个表行,因此不清楚哪些行应该被锁定。例如,如果您查询
PostgreSQL 将选择所有行,对它们进行排序
name
(显式或使用哈希表),计算每个组的值并构造由计数组成的结果行。聚合完成后,结果行无法再链接回原始表行。这是很明显的,因为我没有包含name
在SELECT
列表中,但这没有真正的区别。理论上可以改变这一点,但这样做没有多大意义。