在SQL中更新视图是一个好习惯吗?

时间:2016-12-17 12:50:31

标签: sql database postgresql sqlite

我正在学习SQL。似乎PostgreSQL允许您通过“视图”更新表,如果您可以看到表的一些选择列。另一方面,SQLite根本不支持这个(这对我来说更有意义)。

我想知道即使在允许的情况下通过视图更新表是否是一个好习惯?

1 个答案:

答案 0 :(得分:1)

这个问题可能是一个意见问题,但我会说通过视图更新数据通常不是一个好习惯,尽管有例外。

定义视图的主要原因之一是将用户与基础数据结构的更改隔离开来。因为并非所有视图都是可更新的,这意味着更改视图的定义(而不是结果集)可能会使代码无效。

在某些数据库中,可以通过在视图上使用触发器来解决这个问题。

我应该补充一点,就是“一般”思维。获得视图的另一个原因是访问控制和安全性。例如,某些用户可能无法在某些表中看到某些列;他们可以访问视图但不能访问基础表。在这种情况下,对视图的更新会更合理。

所有这一切,我应该指出,我真的不喜欢让用户直接更新数据。我倾向于通过存储过程进行此类更新,因此可以更好地控制数据模型,审计和用户访问。