SQL Server 关于触发器的理解和应用

触发器是一种特殊的存储过程,能够完成主键和外键不能保证的复杂的数据完整性和一致性。

主要用途:

  1. 对数据库间的完整性做强制约束。
  2. 对数据库中的表进行级联操作,可以自动触发操作类型。
  3. 跟踪变化,对违法的操作进行回滚或撤销,保证数据库的安全。
  4. 可以设定错误返回信息,增加程序的可维护性。
  5. 触发器可以调用更多的存储过程。

主要优点:

  • 触发器是自动执行的,一旦设立就存在一种触发机制,永远监控着数据库的事件状态。
  • 触发器可以对数据库中的表进行层叠更改。
  • 触发器可以设置比check更为复杂的约束限制。触发器还可以对不同表中的列进行引用。

1,数据操作触发器(DML)

ceate trigger triggername

on table

{after/before/instead of } {insert,update,delete}

as

begin

//PL/SQl 过程块

end

after:用于指定触发器在SQL语句中指定数据操作完成后才能被触发有关级联操作和约束性检查成功后才能执行操作。after只能创建在表上,不能创建在触发器。使用after触发器首先会建立inserted,deleted,表然后执行SQL语句中的数据操作,最后才会执行触发器中的代码。

instead of 是一种动作执行前的触发类型,用触发器代替触发语句进行操作。在表或视图中只能定义一个instead of 触发器,可以定义多个after触发器。使用instead of触发器则是在建立inserted,deleted表后直接对触发器进行执行。

before:一种动作执行前的触发类型

2:数据定义语言触发器(DDL)

数据定义语言触发器主要是为了响应各种数据定义语言事件而响应,主要与create,,alter,drop开头的T-SQL语句相对应。

例如拒绝用户对数据库中的表进行删除和更改操作。

SQL Server 关于触发器的理解和应用

如果想让整个服务器都收到DDL触发器的约束,可以创建作用于服务器中的触发器

SQL Server 关于触发器的理解和应用

触发器的常用应用

1,创建登录触发器

SQL Server 关于触发器的理解和应用

SQL Server 关于触发器的理解和应用当用log_test登录时,登录失败。

2,限制非工作时间操作数据

创建触发器允许log_test只能在8:00-17:00登录

SQL Server 关于触发器的理解和应用

重命名触发器

exec sp_rename Oldname,Newname