Hir*_*isi 3 view sql-server-2008 delete-row
我正在使用 SQL Server Management Studio 2008。
我想从一个视图中删除单个记录,该视图显示所有列的该记录中的空值。
我无法知道,从哪个表中我得到了这个空记录。
我检查了为视图连接的所有表,但没有一个表包含空记录。
谁能帮我从我的视图和所有相关表中删除这个空记录..?
因为我在许多其他页面中使用此视图,并且它在每个页面中都使用空值创建错误。
当我尝试从视图中删除此记录时,它显示如下错误
"Msg 4405, Level 16, State 1, Line 1
View or function 'viewGetProgressOverview' is not updatable because the modification affects multiple base tables."
如果您在 SQL 中创建了基于单个表的视图 - 您在视图上执行的 DML 操作会自动传播到基表。
但是,当您加入多个表以创建视图时,如果您对视图执行 DML 语句,则会遇到以下错误:
Msg 4405, Level 16, State 1, Line 1
View or function 'ViewName' is not updatable because the modification affects
multiple base tables.
更新联接视图的规则如下:
连接视图上的任何 INSERT、UPDATE 或 DELETE 操作一次只能修改一个基础基表。
更新规则
连接视图的所有可更新列必须映射到键保留表的列。有关密钥保留表的讨论,请参阅“密钥保留表”。如果视图是用 WITH CHECK OPTION 子句定义的,则所有连接列和重复表的所有列都是不可更新的。
删除规则
只要联接中只有一个保留键的表,就可以删除联接视图中的行。如果视图是用 WITH CHECK OPTION 子句定义的并且键保留表重复,则不能从视图中删除行。
插入规则
INSERT 语句不得显式或隐式引用非键保留表的列。如果连接视图是使用 WITH CHECK OPTION 子句定义的,则不允许使用 INSERT 语句。
参考 : -
插入到视图 - INSTEAD OF TRIGGER - SQL Server
| 归档时间: | 
 | 
| 查看次数: | 24340 次 | 
| 最近记录: |