首頁 >資料庫 >mysql教程 >如何修改 PostgreSQL 視圖中的欄位而不刪除和重新建立它們?

如何修改 PostgreSQL 視圖中的欄位而不刪除和重新建立它們?

Barbara Streisand
Barbara Streisand原創
2025-01-03 08:41:391014瀏覽

How to Modify Columns in PostgreSQL Views Without Dropping and Recreating Them?

放鬆PostgreSQL 對視圖的控制

問題:

如何繞過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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn