2016-05-10 57 views
2

我有一個觀點,他列一個是timetaken整型我想改變它作爲numeric.For這個我用下面的語法如何使用PostgreSQL更改或更改視圖中的列類型?

ALTER VIEW view_timesheets ALTER COLUMN timetaken type numeric; 

當我運行此我得到的異常,因爲

「view_timesheets」是不是表,複合型,或外部表

請解釋如何改變列type.Thank您

回答

2

這是不可能的。您將不得不通過提供完整的定義來重新創建視圖。另外請注意,當您更改列的類型時,甚至不能創建或替換VIEW。如果你的視圖取決於視圖的變化,你將不得不刪除/創建它們。

在我的公司,我們使用的策略是,在數據庫中可以重新調用的所有東西(比如視圖,函數等)存儲在一堆大型SQL文件中,我們每次在底層表結構中進行任何更改時都會執行我們不必關心依賴性視圖。

這些文件中的視圖部分基本上是這樣的:

DROP VIEW IF EXISTS vw_a CASACDE; 
CREATE OR REPLACE VIEW vw_a AS 
...; 

DROP VIEW IF EXISTS vw_b_depending_on_a CASACDE; 
CREATE OR REPLACE VIEW vw_b_depending_on_a AS 
...; 

課程的第二CASCADE還有OR REPLACE好像沒用,但他們陌可以複製&粘貼改變定義輕鬆放入運行dev數據庫沒有太多的思考。