zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

数据库之触发器

数据库 触发器
2023-09-11 14:20:54 时间

触发器——看到这个名字总是会想到数电中学过的触发器,有输入端和输出端,根据电平的高低来触发。

数据库中的触发器是个特殊的存储过程,主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名称而被直接调用。

作用:使用T——SQL语句进行复杂的逻辑处理,基于一个表创建,但是可以对多个表进行操作,因此常常用于复杂的业务规则。可以完成如下功能:

1 、级联修改数据库中相关的表

2、执行比核查约束更为复杂的约束操作

3、拒绝或回滚违反引用完整性的操作。

4、比较表修改前后数据之间的差别,并根据差别采取相应的操作。

创建触发器的规则和限制:

1、Create Trigger语句必须是批处理中的第一个语句。

2、在默认情况下,创建触发器的权限将分配给数据表的所有者,且不能转给其他用户

3、触发器是数据库对象,其名称必须遵循标识符的命名规则。

4、虽然触发器可以引用当前数据库以外的对象,但是只能在当前数据库中创建触发器。

5、虽然不能在临时数据表上创建触发器,但是触发器可以引用临时数据表。

6、不能在系统数据表创建触发器,也不可以引用系统数据库。

7、在包含使用delete或updata操作定义中,不能定义instead of和instead of update触发器。

8、TRUNCATE TABLE语句不会引发Delete触发器,因为该语句没有被记入日志

9、Writetext语句不会引发insert或update触发器

注意:当创建一个触发器时必须指定:名称;在其上定义触发器的表;触发器将何时激发;激活触发器的数据修改语句。

管理触发器有两种方法:一是使用企业管理器管理触发器;二是使用T——SQL管理触发器。都可以对触发器进行创建,修改,删除。

使用T——SQL查看触发器相关数据:使用系统存储过程sp_helptrigger:语法如下:exec sp_helptrigger‘table’[,type]

table:触发器所在的表名

type:指定列出的操作类型的触发器。若不指定,则列出所有的触发器。

例子:exec sp_helptriggeremployee








====================================分割线================================



最新内容请见作者的GitHub页:http://qaseven.github.io/


记一次数据库删表事件 目前我司正处于一种混乱的开发环境中; 对于数据库字段增修都是开发人员直上服务器数据库修改(我多次强调); 我未入职前,是直接通过SFTP连接服务器,对项目进行开发和修改(话说造成代码覆盖都不知道是谁干的,多次建议开发使用Git); 入职后我写一个开发规范文档:软件开发手册(欢迎各位大佬提出意见) 虽然对开发规范有所改变,但还是因为不可抗力因素无法执行,也是造成我最近想跳槽的原因;
数据库的触发器你了解多少 触发器是与表有关的数据库对象,指的是在insert\update\delete操作之前或者之后,能够触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以使得应用在数据库端确保数据的完整性以及日志记录,数据校验等操作。