触发器能否使用到视图中

er1981 2005-01-05 04:41:22
我数据库中,视图1和表1中数据结构是一样的,我想在视图1中使用触发器在视图更新的是否自动更新表中的数据,这样不知道应该怎样去写!谢谢各位帮忙。
...全文
600 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
---涛声依旧--- 2005-01-06
  • 打赏
  • 举报
回复
視圖中建觸發器很少用
lishine1010 2005-01-06
  • 打赏
  • 举报
回复
我是mssql初学者,我在操作mssql数据库的时候,有时,建立一个表它的属性为只读型的,我想问一下,我怎么修改为可读型的表格?
er1981 2005-01-06
  • 打赏
  • 举报
回复
INSTEAD OF 针对我的例子应该怎么写啊!
631799 2005-01-05
  • 打赏
  • 举报
回复
视图中只能建立instead of触发器.
NinGoo 2005-01-05
  • 打赏
  • 举报
回复
看看联机帮助对可更新视图的定义


可更新视图
Microsoft SQL Server 2000 以两种方法增强可更新视图的类别:

INSTEAD OF 触发器:可以在视图上创建 INSTEAD OF 触发器,以使视图可更新。执行 INSTEAD OF 触发器,而不是执行定义触发器的数据修改语句。该触发器使用户得以指定一套处理数据修改语句时需要执行的操作。因此,如果在给定的数据修改语句(INSERT、UPDATE 或 DELETE)上存在视图的 INSTEAD OF 触发器,则通过该语句可更新相应的视图。有关 INSTEAD OF 触发器的更多信息,请参见设计 INSTEAD OF 触发器。


分区视图:如果视图属于称为"分区视图"的指定格式,则该视图的可更新性受限于某些限制。本主题稍后将讨论分区视图及其可更新性。
必要时,SQL Server 将"本地分区视图"辨别为所有参与表和视图都在同一 SQL Server 上的视图,而将"分布式分区视图"辨别为视图中至少有一个表驻留在不同(远程)服务器上的视图。

如果视图没有 INSTEAD OF 触发器,或者视图不是分区视图,则视图只有满足下列条件才可更新:

select_statement 在选择列表中没有聚合函数,也不包含 TOP、GROUP BY、UNION(除非视图是本主题稍后要描述的分区视图)或 DISTINCT 子句。聚合函数可以用在 FROM 子句的子查询中,只要不修改函数返回的值。有关更多信息,请参见聚合函数。


select_statement 的选择列表中没有派生列。派生列是由任何非简单列表达式(使用函数、加法或减法运算符等)所构成的结果集列。


select_statement 中的 FROM 子句至少引用一个表。select_statement 必须不仅只包含非表格格式的表达式(即不是从表派生出的表达式)。例如,以下视图是不可更新的:
CREATE VIEW NoTable AS
SELECT GETDATE() AS CurrentDate,
@@LANGUAGE AS CurrentLanguage,
CURRENT_USER AS CurrentUser

INSERT、UPDATE 和 DELETE 语句在可以引用可更新视图之前,也必须如上述条件指定的那样满足某些限制条件。只有当视图可更新,并且所编写的 UPDATE 或 INSERT 语句只修改视图的 FROM 子句引用的一个基表中的数据时,UPDATE 和 INSERT 语句才能引用视图。只有当视图在其 FROM 子句中只引用一个表时,DELETE 语句才能引用可更新的视图。
NinGoo 2005-01-05
  • 打赏
  • 举报
回复
To: hdhai9451(Water Space--海洋空間) and bitior()

看看联机帮助的create trigger,视图是可以建trigger,不过有限制

语法
CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS
[ { IF UPDATE ( column )
[ { AND | OR } UPDATE ( column ) ]
[ ...n ]
| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
{ comparison_operator } column_bitmask [ ...n ]
} ]
sql_statement [ ...n ]
}
}

bitior 2005-01-05
  • 打赏
  • 举报
回复
视图上不可以建触发器,不能对视图增删改,所以...
NinGoo 2005-01-05
  • 打赏
  • 举报
回复
视图上可以建触发器,但是不同类型的视图有不同的限制。详细信息参考联机帮助
Andy__Huang 2005-01-05
  • 打赏
  • 举报
回复
//我想在视图1中使用触发器

視圖沒有觸發器,你要在視釁對應的那個表中建觸發器才行
long_205 2005-01-05
  • 打赏
  • 举报
回复
与你在表中写一样的写法

34,590

社区成员

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

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