標籤:
環境;
psql (9.3.6)輸入 "help" 來擷取協助資訊.root=# \d change_me 資料表 "public.change_me" 欄位 | 型別 | 修飾詞 -----------+-----------------------+-------- too_short | character varying(50) | root=# ALTER TABLE change_me ALTER too_short TYPE VARCHAR(30);錯誤: 不能使用視圖或規則改變一個欄位的類型描述: 規則 _RETURN 在 視圖 v_change_me 倚賴於欄位 "too_short"
目的: 更改too_short類型為 VARCHAR(30) 從此處得出 視圖 v_change_me 依賴此表.
一、 安裝指令碼:
前提: 已安裝好psql用戶端
#curl firxiao.com/sh/recreate_views.sh -o recreate_views.sh|chmod +x recreate_views.sh
操作步驟如下:
二、 配置指令碼:
編輯指令碼 將以下內容更改為你自己 然後儲存退出
###configHOST="ip or hostname"DB_NAME="dbname"DB_USER="user"DB_PASSWORD="password"###
三、 查看協助
#./recreate_views.sh Useage: recreate_views.sh: -b <view_name> #backup view and dependent objects Useage: recreate_views.sh: -d <view_name> #delete view and dependent objects Useage: recreate_views.sh: -c "<sql>" #exec custom sql command Useage: recreate_views.sh: -r <view_name> #restore view and dependent objects
四、 測試是否能正常串連
#./recreate_views.sh -c "\dt" List of relations Schema | Name | Type | Owner --------+-----------+-------+------- public | change_me | table | root(1 row)
五、 備份視圖
#./recreate_views.sh -b v_change_mebackup v_change_me to v_change_me_bak.sqlbackup v_change_me_too to v_change_me_bak.sql
將自動將刪除的視圖及依賴備份到 視圖名_bak.sql
六、刪除視圖
#./recreate_views.sh -d v_change_me注意: 遞迴刪除 視圖 v_change_me_tooDROP VIEW
更改表欄位類型
#./recreate_views.sh -c "ALTER TABLE change_me ALTER too_short TYPE VARCHAR(30);"ALTER TABLE
七、恢複已刪視圖
#./recreate_views.sh -r v_change_meSETSETSETSETSETSETSET錯誤: 視圖 "v_change_me" 不存在SETCREATE VIEWSETSETSETSETSETSETSET錯誤: 視圖 "v_change_me_too" 不存在SETCREATE VIEW
八、查看錶類型
./recreate_views.sh -c "\d v_change_me" View "public.v_change_me" Column | Type | Modifiers -----------+-----------------------+----------- too_short | character varying(30) |
至此已完成了對錶欄位類型的更改
postgresql 重建視圖指令碼