T-SQL

T-SQL 知识量:16 - 67 - 243

15.1 认识触发器><

触发器的概念- 15.1.1 -

T-SQL触发器是一种特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发。当对一个表进行操作(如INSERT、UPDATE或DELETE)时,就会激活它执行。触发器可以用于强制服从复杂的业务规则或要求,并可以用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。

触发器可以从DBA_TRIGGERS、USER_TRIGGERS等数据字典中查到,并且可以查询其他表,包含复杂的SQL语句。此外,触发器还可以用于审计目的,记录对数据库进行的修改操作。

需要注意的是,过度使用触发器可能会导致数据库性能下降,因为每次表操作都会触发相应的触发器执行。因此,在使用触发器时需要谨慎考虑其影响,并根据实际需求合理设计。

触发器的作用- 15.1.2 -

触发器的作用主要有以下几点:

  1. 实现参照完整性:触发器可以确保在修改、插入或删除相关表的数据时,保持参照完整性。例如,当在主表中插入、更新或删除记录时,触发器可以自动更新相关表中的数据,以保持数据的一致性。

  2. 自定义业务逻辑:触发器可以用于实现复杂的业务逻辑,例如在数据插入、更新或删除之前进行验证、计算、转换等操作。通过触发器,可以在数据操作的同时,自动执行相关的业务逻辑,提高数据处理效率和准确性。

  3. 实现级联修改:触发器可以用于实现级联修改,即在修改一个表的数据时,自动修改其他相关表的数据。例如,当在一个表中更新员工工资时,触发器可以自动更新其他表中与该员工相关的数据,如奖金、社保等。

  4. 记录审计信息:触发器可以用于记录数据库操作的审计信息,例如记录哪些用户进行了哪些操作、操作的时间和内容等。这可以帮助数据库管理员跟踪数据库的使用情况,及时发现异常操作,并采取相应的措施。

  5. 实现数据验证:触发器可以在数据插入或更新之前进行验证,确保数据的准确性和完整性。例如,在插入或更新员工信息时,触发器可以验证员工年龄是否符合要求、员工邮箱是否唯一等。

触发器的分类- 15.1.3 -

T-SQL触发器主要分为DDL触发器和DML触发器两种。

  • DDL触发器是在用户以某些方式(CREATE、ALTER、DROP或相似的语句)对数据库结构进行修改时激活作出响应。一般来说,只会在对数据库结构的改变或历史进行极为严格的审计时才会用到DDL触发器。

  • DML触发器是一些附加在特定表或视图上的代码片段。与需要显式调用代码的存储过程不同,只要有附加触发器的事件在表中发生,触发器中的代码就会自动运行。实际上也不能显式地调用触发器,唯一的做法是在指定的表中执行所需的操作。