背景:
触发器是一个在修改指定表中的数据时执行的存储过程。经常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性或一致性,由于用户不能绕过触发器,所以可以用它来强制实施复杂的业务规则,以此确保数据的完整性。
触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。当对某一表进行诸如UPDATE、INSERT、DELETE这些操作时,SQL server就会自动执行触发器所定义的SQL雨具,从而确保对数据的处理符合由这些SQL语句所定义的规则。
为什么要使用触发器
触发器自动执行,它们在表的数据作了任何修改(比如手工输入或者使用程序的采集的操作)之后立即激活。
触发器可以通过数据库中的相关表进行层叠更改,这比直接把代码写在前台的做法更安全合理。
触发器可以强制限制,这些限制比用CHECK约束所定义的更复杂,与CHECK约束不同的是,触发器可以应用其他表中列。
触发器种类
DDL触发器
DDL触发器当服务器或者数据库中发生数据定义语言(DDL)事件时被将调用。如果要执行以下操作,可以使用DDL触发器:
要防止对数据库架构进行某些更改
希望数据库中发生某些软件情况响应数据库架构中的更改
要记录数据库架构中的更改或者事件
DML触发器
DML触发器是当数据库服务中发生数据库语言(DML)事件时要执行的操作,通常所说的DML触发器。DML触发器可以查询其他表,还可以包含复杂的Transact_SQL语句。将触发器和触发它的语句作为可在触发器内回滚单个事务对待。如果检测到错误,则整个事务自动回滚。
过程:
创建触发器:
INSERT:
CREATE TRIGGER trigger_name
ON{table|view}
{
{ {FOR |AFTER|INSTEAD OF}
{[DELETE] [,] [INSERT] [,] [UPDATE] }
AS
Sql_statement
}
}
DELETE:
UPDATE:
DLL:
CREATE TRIGGER trigger name
ON{ALL SERVER | DATABASE}
WITH ENCRYPTION ‘触发器文本加密
{FRO| AFTER|{event_type}
AS
Sql_statement
总结:
想要了解触发器,还是先知道什么是触发器,就像学习一个新的知识点先知道怎么用,什么时候用,知己知彼百战百殆。