SQL数据库触发器的使用方法(2)_SQL SERVER数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

SQL数据库 触发器的使用方法(2)

作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0

黑客防线网安网讯:   在 INSTEAD OF 触发器中使用 inserted 和 deleted 表  传递到在表上定义的 INSTEAD OF 触发器的 inserted 和 deleted 表遵从与传递到 AFTER 触发器的 inserted 和 deleted 表相同的规则...

   在 INSTEAD OF 触发器中使用 inserted 和 deleted 表

  传递到在表上定义的 INSTEAD OF 触发器的 inserted 和 deleted 表遵从与传递到 AFTER 触发器的 inserted 和 deleted 表相同的规则inserted 和 deleted 表的格式与在其上定义 INSTEAD OF 触发器的表的格式相同inserted 和 deleted 表中的每一列都直接映射到基表中的列。

  有关引用带 INSTEAD OF 触发器的表的 INSERT 或 UPDATE 语句何时必须提供列值的规则与表没有 INSTEAD OF 触发器时相同:

  不能为计算列或具有 timestamp 数据类型的列指定值。

  不能为具有 IDENTITY 属性的列指定值除非该列的 IDENTITY_INSERT 为 ON。当 IDENTITY_INSERT 为 ON 时INSERT 语句必须提供一个值。 INSERT 语句必须为所有无 DEFAULT 约束的 NOT NULL 列提供值。

  对于除计算列、标识列或 timestamp 列以外的任何列,任何允许空值的列或具有 DEFAULT 定义的 NOT NULL 列的值都是可选的。

  当 INSERT、UPDATE 或 DELETE 语句引用具有 INSTEAD OF 触发器的视图时,数据库引擎将调用该触发器,而不是对任何表采取任何直接操作。即使为视图生成的 inserted 和 deleted 表中的信息格式与基表中的数据格式不同,该触发器在生成执行基表中的请求操作所需的任何语句时,仍必须使用 inserted 和 deleted 表中的信息。

  传递到在视图上定义的 INSTEAD OF 触发器的 inserted 和 deleted 表格式与为该视图定义的 SELECT 语句的选择列表相匹配。例如:

CREATE VIEW EmployeeNames (EmployeeID, LName, FName) AS SELECT EmployeeID, LastName, FirstName FROM Northwind.dbo.Employees 


  视图的结果集有三列:一个 int 列和两个 nvarchar 列。传递到在视图上定义的 INSTEAD OF 触发器的 inserted 和 deleted 表也具有名为 EmployeeID 的 int 列、名为 LName 的 nvarchar 列和名为 FName 的 nvarchar 列。

  视图的选择列表还包含不直接映射到单个基表列的表达式。一些视图表达式(如常量调用或函数调用)可能不引用任何列,这类表达式会被忽略。复杂的表达式会引用多列,但在 inserted 和 deleted 表中,每个插入的行仅有一个值。如果视图中的简单表达式引用具有复杂表达式的计算列,则这些简单表达式也有同样的问题。视图上的 INSTEAD OF 触发器必须处理这些类型的表达式。有关更多信息,请参见视图上 INSTEAD OF 触发器中的表达式和计算列。

  顺便说一下,当对某张表建立触发器后,分3种情况讨论

  1.插入操作(Insert)

  Inserted表有数据,Deleted表无数据

  2.删除操作(Delete)

  Inserted表无数据,Deleted表有数据

  3.更新操作(Update)

  Inserted表有数据(新数据),Deleted表有数据(旧数据)

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-10862-1.html
网站维护教程更新时间:2012-03-21 03:11:32  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer