数据库—触发器

概念:

什么是触发器?

是一个特殊的存储过程

定义:在修改指定标的的数据时执行的一个特殊的存储过程。经常通过创建触发器来实现不同表中逻辑相关数据引用完整性或一致性。

触发器和存储过程的不同之处:

  • 触发器通过事件进行触发而执行
  • 存储过程可以通过名字直接调用
  • 当对表执行UPDATE,INSERT,DELETE操作时,SQLS就会自动执行触发器所定义的SQL语句

为什么使用触发器?

1.触发器自动执行,对表的数据做修改以后立即激活

2.可以通过数据库中的相关表进行层叠更改。比直接在前台写代码安全合理

3.可以强制限制,比用CHECK约束的更复杂。与CHECK约束不同:触发器可以引用其他表中的列

触发器种类:

DDL触发器:当服务器或者数据库中发生数据定义语言(DDL)事件时被调用。

DML触发器:当数据库服务器中发生数据操纵语言(DML)事件时要执行的操作

创建INSERT触发器:

语法格式:

CREATE TRIGGER trigger_name

ON {table | view}

{

{{FOR |AFTER | INSTEAD OF}(处罚的类)

{[DELETE] [,] [INSERT] [,] [UODATE]}

AS

Sql_statement

}

}

  • 创建DELETE触发器:

CREATE TRIGGER T_DELETETEACHER

ON 教师信息

FOR DELETE

AS

SELECT 姓名 AS 被删除的教师信息 FROM DELETED

  • 创建UPDATE 触发器:

CREATE TRIIGGER t_UPDATE

ON

AS

BEGIN END

  • 创建DDL触发器:

CREATE TRIGGER trigger_name

ON {ALL SEVER | DATABASE}

EITH ENCRYPTION

{FOR | AFTER |{event_type}

AS

Sql_statement

管理触发器:

点击触发器--右击命令菜单--修改命令

ALTER TABLE TABLE_NAME

ENABLE TRIGGER trigger_name 启用触发器

ALTER TABLE TABLE_NAME

DISABLE TRIGGER trigger_name 禁用触发器

DROP TRIGGER trigger_name 删除触发器

嵌套触发器:

最多可以嵌套32层

递归触发器:

默认情况下。递归触发器是禁用的,可以使用ALTER DATABASE

点击数据库--右击属性--选项--杂项--递归触发器由FLASE变为TRUE

递归触发器具有负责性。注意事项和规则

1.递归触发器很复杂,经过有条理的设计和全面测试

2.在任意点的数据修改会触发一系列触发器,会提供出库复杂关系的能力。但是有时表一特定的顺序更新用户表时。会产生问题

3.所有触发器构成一个大事务。任何触发器的任何位置rollback命令将取消所有数据输入

4.最多递归16层,如果递归第17个结果与发布的命令一样,数据消除

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页