【问题标题】:Is updating a view in SQL a good practice?在 SQL 中更新视图是一种好习惯吗?
【发布时间】:2016-12-17 12:50:30
【问题描述】:
我正在学习 SQL。如果您可以看到表的几个选择列,PostgreSQL 似乎允许您通过“视图”更新表。另一方面,SQLite 根本不支持这一点(这对我来说更有意义)。
我想知道在允许的情况下通过视图更新表格是否是一种好习惯?
【问题讨论】:
标签:
sql
database
postgresql
sqlite
【解决方案1】:
这个问题可能是见仁见智,但我想说通过视图更新数据通常不是一个好习惯,虽然也有例外。
定义视图的主要原因之一是将用户与底层数据结构的变化隔离开来。因为并非所有视图都是可更新的,这意味着对视图定义(但不是结果集)的更改可能会使代码无效。
在某些数据库中,可以通过在视图上使用触发器来解决此问题。
我应该补充的是“一般”思维。拥有视图的另一个原因是访问控制和安全性。例如,某些用户可能无法看到某些表中的某些列;他们可以访问视图,但不能访问基础表。在这种情况下,对视图的更新更合理一些。
说了这么多,我应该指出,我根本不喜欢让用户直接更新数据。我的偏好是通过存储过程进行此类更新,这样可以更好地控制数据模型、审计和用户访问。