欢迎来到天天文库
浏览记录
ID:24819508
大小:51.00 KB
页数:4页
时间:2018-11-16
《浅谈sqlserver触发器的使用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、浅谈SQLServer触发器的使用>>教育资源库 触发器建立的代码Create Trigger TG_ProjectNameOn table1After Update AsUpdate table2Set [工程名]=b.工程名from table2 a,inserted bage列;然而,允许INSTEADOF触发器引用这些列。有关更多信息,请参见CREATETRIGGER。 在INSTEADOF触发器中使用inserted和deleted表 传递到在表上定义的INSTEADOF触发器的inserted和deleted表遵从与传递到AFTER
2、触发器的inserted和deleted表相同的规则。inserted和deleted表的格式与在其上定义INSTEADOF触发器的表的格式相同。inserted和deleted表中的每一列都直接映射到基表中的列。 有关引用带INSTEADOF触发器的表的INSERT或UPDATE语句何时必须提供列值的规则与表没有INSTEADOF触发器时相同: 不能为计算列或具有timestamp数据类型的列指定值。 不能为具有IDENTITY属性的列指定值,除非该列的IDENTITY_INSERT为ON。当IDENTITY_INSERT为ON时,INSER
3、T语句必须提供一个值。INSERT语句必须为所有无DEFAULT约束的NOTNULL列提供值。 对于除计算列、标识列或timestamp列以外的任何列,任何允许空值的列或具有DEFAULT定义的NOTNULL列的值都是可选的。 当INSERT、UPDATE或DELETE语句引用具有INSTEADOF触发器的视图时,数据库引擎将调用该触发器,而不是对任何表采取任何直接操作。即使为视图生成的inserted和deleted表中的信息格式与基表中的数据格式不同,该触发器在生成执行基表中的请求操作所需的任何语句时,仍必须使用inserted和delete
4、d表中的信息。 传递到在视图上定义的INSTEADOF触发器的inserted和deleted表格式与为该视图定义的SELECT语句的选择列表相匹配。例如:CREATE VIE Northployees 视图的结果集有三列:一个int列和两个nvarchar列。传递到在视图上定义的INSTEADOF触发器的inserted和deleted表也具有名为EmployeeID的int列、名为LName的nvarchar列和名为FName的nvarchar列。 视图的选择列表还包含不直接映射到单个基表列的表达式。一些视图表达式(如常量调用或函数调用)
5、可能不引用任何列,这类表达式会被忽略。复杂的表达式会引用多列,但在inserted和deleted表中,每个插入的行仅有一个值。如果视图中的简单表达式引用具有复杂表达式的计算列,则这些简单表达式也有同样的问题。视图上的INSTEADOF触发器必须处理这些类型的表达式。有关更多信息,请参见视图上INSTEADOF触发器中的表达式和计算列。 顺便说一下,当对某张表建立触发器后,分3种情况讨论 1.插入操作(Insert) Inserted表有数据,Deleted表无数据 2.删除操作(Delete) Inserted表无数据,Deleted表有
6、数据 3.更新操作(Update) Inserted表有数据(新数据),Deleted表有数据(旧数据)>>>>这篇文章来自..,。
此文档下载收益归作者所有