2016-12-17 114 views
0

我正在學習SQL。看起來PostgreSQL允許你通過'視圖'來更新表格,如果你能看到表格的幾個選擇列。另一方面,SQLite根本不支持這個(這對我來說更有意義)。在SQL中更新視圖是一種好的做法嗎?

我想知道是否通過視圖更新表格是一種很好的做法,即使它被允許嗎?

+0

如果您編寫[INSTEAD OF觸發器](http://www.sqlite.org/lang_createtrigger.html),SQLite允許更新視圖。 –

回答

1

這個問題可能是一個意見問題,但我會說,通過視圖更新數據通常是不是一個好的做法,雖然也有例外。

定義視圖的主要原因之一是將用戶與基礎數據結構中的更改隔離開來。由於並非所有視圖都是可更新的,這意味着對視圖定義(而不是結果集)的更改可能會使代碼無效。

在某些數據庫中,可以通過在視圖上使用觸發器來解決此問題。

我應該加上那是「一般」的想法。有意見的另一個原因是訪問控制和安全性。例如,某些用戶可能無法在某些表中看到某些列;他們有權訪問該視圖,但不能訪問基礎表。在這種情況下,更新視圖更合理一些。所有這些說法,我應該指出,我並不是真的讓用戶直接更新數據的粉絲。我的首選是通過存儲過程進行更新,因此對數據模型,審計和用戶訪問有更好的控制。

相關問題