为什么我们需要从View中删除触发器?

时间:2014-02-05 23:37:31

标签: sql sql-server plsql triggers

有时我发现一些代码会使触发器允许用户从View中删除? 但是为什么我们需要从View中删除,因为我们只需要转到表格>并像这个简单的代码一样执行删除:

delete from table where x=y ;

我的问题为什么我们使用TRIGGERS对视图进行删除? 换句话说,在View上使用delete有什么好处!

1 个答案:

答案 0 :(得分:2)

  

我们使用视图的原因主要是隐藏数据的复杂性   来源,隐藏实际表(出于安全原因),保存   我们一遍又一遍地编写相同的代码。

     

现在,如果你没有让你的用户直接访问这些表,那么他们就是这样   只有在这种情况下通过View才能执行Deletes   反对意见。

     

触发器仅在View具有多个基础时使用   表。如果是,则无法对视图执行更新,插入或删除操作   影响多个基础表。因此,我们使用Instead of Delete/Update/Insert Triggers来执行这些操作   视图。

     

如果您有更新,删除或有多个底层表   仅插入效果它允许您执行一个基础表   声明,但不能保证它会正确完成。

     

因此,如果您的视图所基于的情况   您应该始终更新/删除/插入多个基础表   

     

1)直接到基础表。
2)使用而不是触发器。

Read here ,详细了解为什么不应对具有多个基础表的视图执行更新/删除/插入操作。