什么是“而不是”触发器?

时间:2009-05-07 02:31:15

标签: sql-server database tsql

在SQL Server中,Instead Of触发了什么?

3 个答案:

答案 0 :(得分:6)

来自Database Journal

  

什么是“而不是”触发器?

     

在以前版本的SQL Server中,   触发器是代码的一部分   被附加到表并执行   预定义后自动   更新发生在指定的   表。这些当然仍然存在于   SQL Server 2000及更高版本。 而不是触发器   附在一张类似的桌子上   方式,但他们内部的代码是   执行代替原文   更新声明。

答案 1 :(得分:1)

而不是触发器实际上非常酷。在过去,我在“只读”视图中使用了触发器而不是触发器,使其表现得像一个表。

这实际上非常酷。

如果T-SQL不是您的优势之一,您甚至可以在.NET中编写这些触发器。

答案 2 :(得分:0)

触发器主要用于强制执行业务约束。可以按以下顺序实现业务约束:实体完整性(主/唯一密钥),域完整性(检查约束),参照完整性(外键)和最终触发器。触发器用于实施复杂的业务约束。

触发器类似于存储过程,它们会根据数据操作操作自动执行。 “而不是触发器”用于处理我们想要自己处理的数据操作。而不是INSERTUPDATEDELETE写在表格上以研究数据并自己采取必要的行动。

EG。如果您不希望在表上发生DELETE并希望监视正在尝试删除表中数据的用户。我们可以编写INSTEAD OF TRIGGER并将currentuser信息写入Audit表。

EG。如果要为用户操作引发自定义消息。在考试时间表中,如果用户试图在周末进行考试,我们可以发出“这是周末休息”的自定义消息

EG。如果我们在多个表上定义了一个视图并且在其上尝试了一个插入,我们就可以使用触发器来执行基表中相应的插入。