修改PostgreSQL表中的字段排列顺序

二、通过修改系统表(pg_attribute)达到字段重新排序的目的
有关系统表的概述及用途可以查看官网:http://www.pgsqldb.org/pgsqldoc-cvs/catalogs.html

表名字表用途
pg_class表,索引,序列,视图(”关系”)
pg_attribute表的列(”属性”,”字段”)

通过pg_class查找[表,索引,视图等的名字],[表在磁盘上的文件的名字]
    SELECT relname, relfilenode FROM pg_class WHERE relname=’order_change_table’;
    查询结果为:order_change_table | 12666
通过pg_attribute查找[此列/字段所属的表],[字段名字],[字段数目]
    SELECT attrelid, attname, attnum FROM pg_attribute WHERE attrelid=12666;
    查询结果为:12666 | id | 1      12666 | name | 2      12666 | password | 3      12666 | new_field | 4
更新pg_attribute的[attnum]字段(将要移动的字段先更新成数据库里面没有的值,再按顺序更新)。
    UPDATE pg_attribute SET attnum=7 WHERE attname=’new_field’  AND attrelid=12666;
    UPDATE pg_attribute SET attnum=6 WHERE attname=’name’       AND attrelid=12666;    
    UPDATE pg_attribute SET attnum=5 WHERE attname=’password’  AND attrelid=12666;
    UPDATE pg_attribute SET attnum=2 WHERE attname=’new_field’  AND attrelid=12666;
    UPDATE pg_attribute SET attnum=3 WHERE attname=’name’        AND attrelid=12666;
    UPDATE pg_attribute SET attnum=4 WHERE attname=’password’  AND attrelid=12666;
再检索表,字段就已经改好顺序了。(缺点:一旦改错表就崩溃,事先一定要备份好。优点:直达根处)
SELECT * FROM order_change_table;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值