在sql server中我们可以更新数据视图。我认为视图的概念是只读表。 为什么我们可以在oracle中编辑sql.is中的视图呢?为什么我们可以在sql server中编辑视图
回答
要回答你的,为什么我们可以创建一个可编辑视图的问题,它这样您可以限制您不想更新(或查看)的字段的访问权限。然后,您可以授予用户访问视图的权限,但不允许访问基础表
对于一个简单的示例,您可以拥有一个人员表。您可以创建允许一些用户更新如紧急联系方式,现场的观点,但看不到或更新的银行信息或工资
有很多的标准,以满足做一个视图可更新,你的确可以INSTEAD OF使用触发器扩展功能http://msdn.microsoft.com/en-us/library/ms187956.aspx
由于意见为read only tables
及其doesn't support DML statements
您无法在视图上执行更新。
一个有趣的因素是,你可以写update statemnt over view
并编写一个instead of trigger
,因此你可以在视图中的表上执行multiple update statements
。
根据具有以下限制
- ORDER BY不起作用Pinal Dev意见。
- 加列贵通过加入表外观
- 创建索引上查看不经常使用
- SELECT *和添加列问题在查看
- COUNT(*)不允许,但COUNT_BIG(*)允许
- UNION不允许,但或索引视图允许
- 跨数据库查询在索引视图中不允许
- 外索引视图加入不允许
- SELF JOI N的索引视图中不允许
- 关键词视图定义一定不包含索引视图
- 查看在查看不可能索引视图
这是关于索引视图。另外,Pinal Dave并不是网络上的最佳来源。他只是从官方文件中反馈信息。 – usr
在许多情况下,视图不是“只读表”(如果视图符合一些基本条件 - 即使在连接两个或多个表时),也可以在视图下修改表而不用触发器,详情请参阅文档, “可更新视图”:http://msdn.microsoft.com/en-us/library/ms187956.aspx – krokodilko
我想视图的概念是一个只读表
不,这更像是一个虚拟表的 - 任何地方,你有一个真正的表,你应该是能够用视图取代它,一个d用户应该没有智慧。
根据Codd:
规则6:视图更新规则: 在理论上可更新所有视图必须是由该系统可更新的。
然而,实际上,这种理想是不可实现的。
除了什么@JamieA写道,观点不仅能限制进入领域,也限制访问表中的数据。
看看简单SQL-Fiddle example和试验它。
该示例中的视图限制访问仅列ID,表中的VAL1,也restrics访问行(仅ID = 2..10)。您只能更新和删除视图中的第2..10行。
不过视图不阻止ID为行插入= 20
这里是another example - 一个观点与检查选项 - 这这种情况下,鉴于防止不仅删除和更新,但阻止也将行是做不匹配视图的where子句。
@yogi写道,如果视图连接两个表时,我们不能更新视图 - >这里是一个third demo显示联接两个表的简单看法,以及如何查看作品的更新。这些简单的例子适用于Oracle,但经过小的修改后,也应该在MS-SQL中工作(必须更改创建表中的数据类型),因为当我查看通过MSDN文档时(部分:可更新视图 - >http://msdn.microsoft.com/en-us/library/ms187956.aspx),我没有' t找到ms-sql和oracle之间的任何显着差异,似乎视图在两个数据库上都是相似的。
是的,它是Oracle可能的,其他的答案已经解释了为什么意见是可更新的,并阐明了这个问题的一些光,但也允许在Oracle中,但有一些限制/这里限制的是Oracle documentation
像,在视图中选择不能有:聚合函数,不同的条款,按...阅读链接了解更多信息
- 1. 使SQL视图可编辑
- 2. 我们为什么可以在VB
- 3. 为什么我们在SQL
- 4. 为什么我不能使用ASP和SQL Server编辑记录?
- 5. 为什么我的textalign不可编辑?
- 6. 为什么我的EditText不可编辑?
- 7. 为什么我的主键可编辑
- 8. 在SQL Server中可编辑表值
- 9. 为什么我们可以与IDM
- 10. 我可以在Sql Server 2005视图中使用递归吗?
- 11. 如何在VB.net中我们可以编码字符串为SQL
- 12. 为什么SQL Server的GUI会破坏我的视图?
- 13. 我们可以在edittext中有不可编辑的文本
- 14. 我们可以检查谁从SQL Server 2008中删除了什么
- 15. 在Management Studio中编辑SQL Server视图后不工作
- 16. 为什么我可以从SQL Server运行.bat而不是.exe?
- 17. 为什么我可以编辑但不附加unix文件
- 18. 我们可以在sql
- 19. 编辑ListView组头像我们可以编辑ListViewItems
- 20. 为什么我的视图在SQL Server中返回无效的对象错误
- 21. 我们可以将参数传递给SQL中的视图吗?
- 22. 为什么我无法在此JQuery视图中显示和编辑double \ floating值?
- 23. 我们可以在SQL Server 2008的计算列中编写存储过程吗?
- 24. 我们可以选择在SQL Server 2016中使用`JSON路径'
- 25. 为什么我无法在Carrierwave中编辑此图像?
- 26. ipad我可以在splitView模板上编辑主视图
- 27. 为什么我的UiProperty不再可以在GWT设计器中编辑?
- 28. 我的按钮内的文本可以在HTML中编辑。为什么?
- 29. 是否可以将视图脚本编写为SQL Server中的表格?
- 30. 为什么我的视图不可见?
正是你的意思与“更新视图”是什么?针对视图运行'UPDATE'语句?是的,Oracle也可以(以及其他许多现代DBMS) –
更新数据。为什么我们可以更新视图? –
你不需要在View上使用“而不是”触发器来执行更新逻辑吗? – DaveShaw