trigger教學 - postgresql資料表




如何更改PostgreSQL數據庫表中列的位置? (4)

我嘗試了以下,但我沒有成功:

ALTER TABLE person ALTER COLUMN dob POSITION 37;

PostgreSQL Wiki中的“ 更改列位置 ”說:

PostgreSQL目前根據pg_attribute表的attnum列定義列順序。 更改列順序的唯一方法是重新創建表,或者通過添加列和旋轉數據,直到達到所需的佈局。

這非常弱,但在他們的辯護中,在標準SQL中,也沒有重新定位列的解決方案。 支持更改列的序號位置的數據庫品牌定義了SQL語法的擴展。

另一個想法發生在我身上:您可以定義一個VIEW ,指定列的順序,不改變基表中列的物理位置。


其中一個,雖然在必須絕對更改列順序時重新排列列的笨拙選項,並且正在使用外鍵,但是首先使用數據轉儲整個數據庫,然後僅轉儲模式( pg_dump -s databasename > databasename_schema.sql )。 接下來,編輯模式文件以根據需要重新排列列,然後從模式重新創建數據庫,最後將數據還原到新創建的數據庫中。


在PostgreSQL中,在添加字段時,它將添加到表的末尾。 如果我們需要插入到特定位置那麼

alter table tablename rename to oldtable;
create table tablename (column defs go here);
insert into tablename (col1, col2, col3) select col1, col2, col3 from oldtable;

我認為你目前不能: 在Postgresql維基上看到這篇文章

本文的三個解決方法是:

  1. 重新創建表格
  2. 添加列並移動數據
  3. 隱藏視圖中的差異。




alter-table