首页 理论教育SQLServer触发器简介

SQLServer触发器简介

【摘要】:DDL触发器可用于防止对数据库架构进行某些更改、数据库中发生某种情况以响应数据库架构的更改、记录数据库架构的更改或事件。3)登录触发器登录触发器将为响应LOGON事件而激发存储过程。登录触发器将在登录的身份验证阶段完成后且用户会话事件建立之前激发。

1.触发器的概念

触发器是一种特殊的存储过程,基于表/视图/服务器/数据库创建,满足一定条件时自动执行,不由用户直接调用,以保证数据库的完整性、正确性和安全性。

当触发器所保护的数据发生变化(UPDATE、INSERT、DELETE)或当服务器、数据库中发生数据定义(CREATE、ALTER、DROP)后,其自动运行以保证数据的完整性和正确性。

2.触发器的分类

1)DML(Data Manipulation Language)触发器

DML触发器在发生数据操作语言(DML)事件(INSERT、UPDATE或DELETE)时自动生效。DML触发器可用于强制业务规则和数据完整性、查询其他表并包括复杂的T-SQL语句。将触发器和触发它的语句作为可在触发器内回滚的单个事务对待。如果检测到错误(例如磁盘空间不足),则整个事务即自动回滚。

(1)AFTER触发器:在数据变动(INSERT、UPDATE、DELETE操作)完成后被激发。对变动的数据进行检查,如发现错误,将拒绝或回滚变动的数据。该触发器只能创建在表上,不能创建在视图上;一个表可以有多个基于不同操作的AFTER触发器。(www.chuimin.cn)

(2)INSTEAD OF触发器:将在数据变动以前被激发,并取代变动数据的操作(INSERT、UPDATE、DELETE操作),转而去执行触发器定义的操作。一个表只有一个该触发器,它可以创建在表上,也可以创建在视图上。

2)DDL(Data Definition Language)触发器

当服务器或数据库中发生数据定义语言(DDL)事件时将调用该触发器,它为响应多种数据定义语言语句而激发。这些语句主要是以CREATE、ALTER和DROP开头的语句。DDL触发器可用于防止对数据库架构进行某些更改、数据库中发生某种情况以响应数据库架构的更改、记录数据库架构的更改或事件。

3)登录触发器

登录触发器将为响应LOGON事件而激发存储过程。与SQL Server实例建立用户会话时将引发此事件。登录触发器将在登录的身份验证阶段完成后且用户会话事件建立之前激发。

可以使用登录触发器来审核和控制服务器会话,如通过跟踪登录活动、限制SQL Server的登录名或限制特定登录名的会话数。