视图或函数'Dept20'不可更新,因为修改会影响多个基表

时间:2015-08-26 10:59:47

标签: sql sql-server

为什么我得到View或函数'Dept20'是不可更新的,因为修改会影响多个基表?

create view Dept20
as select j.kojab as employe_id ,p.nama as employee ,j.gapok
from jabatan j, pegawai p
where j.kojab = p.Kojab
and j.kojab = 4

当我想删除时

delete from Dept20
where employee = 'rojib2' 

我收到错误:

  

Msg 4405,Level 16,State 1,Line 2

     

视图或功能'Dept20'不可更新,因为修改   影响多个基表。

我需要帮助......

1 个答案:

答案 0 :(得分:0)

您遇到的概念(错误)称为Updatable View。基本上,数据库服务器无法自行确定应删除的内容,因为从视图到相关基表的反向映射是不明确的。正如评论中所指出的那样,您可以考虑在视图中定义INSTEAD OF TRIGGER。