小编use*_*437的帖子

为什么 PostgreSQL 不允许对列重新排序?

无数次,例如现在,我需要更改表中列的顺序。

例如,当我改进CREATE TABLE库中的 SQL 代码时,通过在表中的某处添加一列,然后我需要使我的“实时”表反映这些更改。当我添加新列时,它被放置在最后/“右侧”,并且拒绝让我指定它应该去的位置。

虽然这可能对性能影响很小或没有影响,但知道“实时”表和 SQL 代码中定义的表之间的列顺序不同是非常烦人的。

我读过 Stack Exchange 上有关此问题的问题,并多年来多次询问 PG 开发人员。他们莫名其妙地不支持对列重新排序,而是提出可笑的“解决方案”,例如转储整个数据库并将其重新加载,或者创建一个单独的“视图”,或者许多其他奇怪的解决方法,这些解决方法是不切实际的,并且在许多情况下比顺序错误更糟糕的情况。

我不是在问如何做到这一点,因为这显然是不可能的。我只是想知道为什么这是不可能的。我无法想象对列重新排序存在真正的技术挑战,但也许确实存在?从我从 PG 开发者/社区那里得到的态度/氛围来看,这对我来说就像是他们可以轻松修复但出于某些哲学原因而无法修复的事情之一。

真正的原因是什么?对于 PG 来说,简单地交换一些内部数字以使列获得所需的顺序真的那么困难吗?让两个相关的列永远彼此远离看起来真的很难看,这是对我在最初创建表时没有立即考虑后面的列的惩罚。

postgresql

9
推荐指数
1
解决办法
7019
查看次数

标签 统计

postgresql ×1