根据MSDN,由简单选择组成的视图自动允许您在表上使用insert/update/delete语句.有没有办法防止这种情况 - 告诉Sql Server该视图是只读的,你不能用它来修改表?
Mar*_*ith 15
最好的方法是删除UPDATE/DELETE/INSERT
View的权限.
除此之外,你可以INSTEAD OF
在视图上创建一个触发器,它只是无助于使更新无声地失败,或者有很多构造使视图不可更新.因此,您可以选择一个不会改变语义或效率然后违反它的方法.
编辑:以下似乎符合条例草案.
CREATE VIEW Bar
AS
SELECT TOP 100 PERCENT x
FROM foo
WITH CHECK OPTION
Run Code Online (Sandbox Code Playgroud)
Gui*_*rez 11
您可以指定一个UNION
运算符,以便在INSERT/UPDATE/DELETE操作期间使SQL Server失败,如下所示:
create view SampleView
as
select ID, value from table
union all
select 0, '0' where 1=0
Run Code Online (Sandbox Code Playgroud)
最后一个查询根本不返回任何行,但必须具有与第一个查询相同数据类型的相同数量的字段,才能UNION
安全使用.有关详细信息,请参阅此链接:使表只在SQL Server数据库中读取的不同方法
归档时间: |
|
查看次数: |
27989 次 |
最近记录: |