2016-12-17 56 views
0

我正在学习SQL。看起来PostgreSQL允许你通过'视图'来更新表格,如果你能看到表格的几个选择列。另一方面,SQLite根本不支持这个(这对我来说更有意义)。在SQL中更新视图是一种好的做法吗?

我想知道是否通过视图更新表格是一种很好的做法,即使它被允许吗?

+0

如果您编写[INSTEAD OF触发器](http://www.sqlite.org/lang_createtrigger.html),SQLite允许更新视图。 –

回答

1

这个问题可能是一个意见问题,但我会说,通过视图更新数据通常是不是一个好的做法,虽然也有例外。

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

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

我应该加上那是“一般”的想法。有意见的另一个原因是访问控制和安全性。例如,某些用户可能无法在某些表中看到某些列;他们有权访问该视图,但不能访问基础表。在这种情况下,更新视图更合理一些。所有这些说法,我应该指出,我并不是真的让用户直接更新数据的粉丝。我的首选是通过存储过程进行更新,因此对数据模型,审计和用户访问有更好的控制。

相关问题