問題:
如何繞過PostgreSQL 對視圖中列變更的嚴格控制?我更喜歡修改列,而不必每次都刪除並重新建立視圖。
解決方案:
有兩種方法可以實現此目的:
要完全消除該問題,請考慮使用text 或varchar/character 不同的資料類型,而無需指定長度。這將允許無縫更改而不影響依賴視圖。
或者,實作 CHECK 約束以強制執行最大長度:
ALTER TABLE monkey ADD CONSTRAINT monkey_name_len CHECK (length(name) < 101);
可以變更或刪除此約束,而不會影響檢視或觸發不必要的資料重寫。
PostgreSQL 視圖不只是子查詢別名。它們被實作為具有專門規則的表,從而允許使用 ALTER TABLE 靈活地修改輔助屬性。但是,更改基礎資料類型需要刪除並重新建立視圖。這會保留數據,但可能會刪除新增的屬性。
要變更檢視中的基礎查詢,請使用 CREATE OR REPLACE VIEW。但是,這對於資料類型更改是不可能的。因此,有必要刪除並重新建立視圖以適應此類修改。
以上是如何修改 PostgreSQL 視圖中的欄位而不刪除和重新建立它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!