我知道你不应该依赖列顺序 – 这对我所做的不是至关重要的 – 我只需要使一些自动生成的东西以更令人愉快的方式出现,这样现场订单就可以匹配所有的方式从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中列的自然顺序?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)