postgresql – 是否可以更改Postgres中列的自然顺序?

postgresql – 是否可以更改Postgres中列的自然顺序?,第1张

概述是否可以改变Postgres 8.1中列的自然顺序? 我知道你不应该依赖列顺序 – 这对我所做的不是至关重要的 – 我只需要使一些自动生成的东西以更令人愉快的方式出现,这样现场订单就可以匹配所有的方式从pgadmin到后端和出来到前端。 你实际上可以直接更改列的顺序,但是我几乎不推荐它,如果你决定这样做,你应该非常小心。 例如。 # CREATE TABLE test (a int, b int 是否可以改变Postgres 8.1中列的自然顺序?

我知道你不应该依赖列顺序 – 这对我所做的不是至关重要的 – 我只需要使一些自动生成的东西以更令人愉快的方式出现,这样现场订单就可以匹配所有的方式从pgadmin到后端和出来到前端。

你实际上可以直接更改列的顺序,但是我几乎不推荐它,如果你决定这样做,你应该非常小心。

例如。

# CREATE table test (a int,b int,c int);# INSERT INTO test VALUES (1,2,3);# SELECT * FROM test; a | b | c ---+---+--- 1 | 2 | 3(1 row)

现在,对于棘手的一点,您需要使用postgres用户连接到您的数据库,以便您可以修改系统表。

# SELECT relname,relfilenode FROM pg_class WHERE relname='test'; relname | relfilenode ---------+------------- test_t  |       27666(1 row)# SELECT attrelID,attname,attnum FROM pg_attribute WHERE attrelID=27666; attrelID | attname  | attnum ----------+----------+--------    27666 | tableoID |     -7    27666 | cmax     |     -6    27666 | xmax     |     -5    27666 | cmin     |     -4    27666 | xmin     |     -3    27666 | ctID     |     -1    27666 | b        |      1    27666 | a        |      2    27666 | c        |      3(9 rows)

attnum是一个唯一的列,因此您需要在修改列号时使用临时值:

# UPDATE pg_attribute SET attnum=4 WHERE attname='a' AND attrelID=27666;UPDATE 1# UPDATE pg_attribute SET attnum=1 WHERE attname='b' AND attrelID=27666;UPDATE 1# UPDATE pg_attribute SET attnum=2 WHERE attname='a' AND attrelID=27666;UPDATE 1# SELECT * FROM test; b | a | c ---+---+--- 1 | 2 | 3(1 row)

再次,因为这是使用数据库系统表,如果你真的需要这样做,请非常小心。

这是与postgres 8.3一起工作,与以前的版本,你的口味可能会有所不同。

总结

以上是内存溢出为你收集整理的postgresql – 是否可以更改Postgres中列的自然顺序?全部内容,希望文章能够帮你解决postgresql – 是否可以更改Postgres中列的自然顺序?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1170821.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存