怎么创建只读视图?

zerg2001 2010-12-30 10:35:14
SQL2000,创建了一系统的报表视图给另一个系统使用。为防止该系统写入或删除数据,该怎么创建视图呢?
...全文
757 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ohfox 2010-12-30
  • 打赏
  • 举报
回复
grant select ....
王向飞 2010-12-30
  • 打赏
  • 举报
回复
指定SELECT 权限即可
zerg2001 2010-12-30
  • 打赏
  • 举报
回复
不能只在视图的语句中修改来达到这个目的吗?
比如:
create view vT1 as
select * from table1
go
中加语句来实现。

权限的话,因为该客户端是用Sa过来连接的,能限制吗?
Shawn 2010-12-30
  • 打赏
  • 举报
回复
#1. 某些简单视图非只读,可UPDATE, INSERT, DELETE
#2. 可通过权限的设定达到你的目的,或你创建的视图DBMS是不支持修改表数据的
dawugui 2010-12-30
  • 打赏
  • 举报
回复
你只要不用到下面的功能,那视图就是只读的.
通过视图修改数据
可以按下列方式通过视图修改数据:

使用具有支持 INSERT、UPDATE 和 DELETE 语句的逻辑的 INSTEAD OF 触发器。


使用修改一个或多个成员表的可更新分区视图。
如果视图不使用 INSTEAD OF 触发器或者不是可更新分区视图,则只要符合下列条件,仍可更新:

如果视图不使用 INSTEAD OF 触发器或者不是可更新分区视图,则只要符合下列条件,仍可更新:

视图在视图定义的 FROM 子句中包含至少一个表;视图不能只基于一个表达式。


在选择列表中没有使用聚合函数(AVG、COUNT、SUM、MIN、MAX、GROUPING、STDEV、STDEVP、VAR、VARP)或 GROUP BY、UNION、DISTINCT 或 TOP 子句。但是,可以在 FROM 子句定义的子查询范围内使用聚合函数,前提条件是聚合函数生成的派生值没有修改过。


说明 使用 UNION ALL 运算符的分区视图是可更新视图。

在选择列表中不使用派生列。派生列是由除简单列引用以外的一切构成的结果集列。
通过视图修改数据的准则
不使用 INSTEAD OF 触发器或可更新分区视图而通过视图修改数据之前,请考虑下列准则:

如果在视图定义中使用了 WITH CHECK OPTION 子句,则所有在视图上执行的数据修改语句都必须符合定义视图的 SELECT 语句中所设定的条件。如果使用了 WITH CHECK OPTION 子句,修改行时需注意不让它们在修改完成后从视图中消失。任何可能导致行消失的修改都会被取消,并显示错误信息。


SQL Server 必须能够明确地解析对视图所引用基表中的特定行所做的修改操作。不能在一个语句中对多个基础表使用数据修改语句。因此,列在 UPDATE 或 INSERT 语句中的列必须属于视图定义中的同一个基表。


对于基础表中需更新而又不允许空值的所有列,它们的值在 INSERT 语句或 DEFAULT 定义中指定。这将确保基础表中所有需要值的列都可以获取值。


在基础表的列中修改的数据必须符合对这些列的约束,如为空性、约束、DEFAULT 定义等。例如,如果要删除一行,则相关表中的所有基础 FOREIGN KEY 约束必须仍然得到满足,删除操作才能成功。


分布式分区视图(远程视图)不能使用键集驱动游标更新。此项限制可通过在基础表上而不在视图本身上声明游标得到解决。
此外,如果在视图中删除数据:

在视图定义的 FROM 子句中只能列出一个表。
不能在视图中与text、ntext 或 image 列一起使用 READTEXT 和 WRITETEXT 语句。

水族杰纶 2010-12-30
  • 打赏
  • 举报
回复
做权限控制就行了
给只读权限
dawugui 2010-12-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 zerg2001 的回复:]
SQL2000,创建了一系统的报表视图给另一个系统使用。为防止该系统写入或删除数据,该怎么创建视图呢?
[/Quote]
一般来说,视图都是只读的.
yesyesyes 2010-12-30
  • 打赏
  • 举报
回复
sa
什么都能干了
Rotel-刘志东 2010-12-30
  • 打赏
  • 举报
回复
视图的一般的权限就是只读的,如果特殊的控制其权限的话,可控制的。
billpu 2010-12-30
  • 打赏
  • 举报
回复
通过sa过来...怎么改也没用呀...
幸运的意外 2010-12-30
  • 打赏
  • 举报
回复
数据库系统不会自动插入或删除视图。所以,只要你的程序不会忘视图关联的数据表里写入数据,就不会影响视图的。

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧