触发器简介

简介: 触发器是一个在修改指定表中的数据时执行的存储过程。经常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性或一致性,由于用户不能绕过触发器,所以可以用它来强制实施复杂的业务规则,以此确保数据的完整性。


背景:

触发器是一个在修改指定表中的数据时执行的存储过程。经常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性或一致性,由于用户不能绕过触发器,所以可以用它来强制实施复杂的业务规则,以此确保数据的完整性。

触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。当对某一表进行诸如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


 

总结:

 想要了解触发器,还是先知道什么是触发器,就像学习一个新的知识点先知道怎么用,什么时候用,知己知彼百战百殆。

 




目录
相关文章
|
关系型数据库 MySQL PHP
|
16天前
|
存储 安全 关系型数据库
2024 Mysql基础与进阶操作系列之MySQL触发器详解(21)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
MySQL触发器的使用场景之数据完整性约束、如何具体创建person的日志表、触发器与存储过程的对比与选择、触发器的性能和注意事项等具体操作详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
5月前
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(2)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
5月前
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(1)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
3月前
|
存储 关系型数据库 MySQL
MySQL 中的触发器数量之谜
【8月更文挑战第31天】
36 0
|
3月前
|
SQL 数据采集 关系型数据库
|
4月前
|
存储 SQL 关系型数据库
(十四)全解MySQL之各方位事无巨细的剖析存储过程与触发器!
前面的MySQL系列章节中,一直在反复讲述MySQL一些偏理论、底层的知识,很少有涉及到实用技巧的分享,而在本章中则会阐述MySQL一个特别实用的功能,即MySQL的存储过程和触发器。
|
4月前
|
存储 SQL 数据库
MySQL设计规约问题之为什么要避免使用存储过程、触发器和函数
MySQL设计规约问题之为什么要避免使用存储过程、触发器和函数
|
5月前
|
存储 SQL 关系型数据库
MySQL数据库进阶第四篇(视图/存储过程/触发器)
MySQL数据库进阶第四篇(视图/存储过程/触发器)