欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据库视频-----触发器

程序员文章站 2022-05-07 14:33:00
...

什么是触发器?

 

触发器概念

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

触发器与存储过程的不同

触发器主要是通过事件进行触发而被执行的,

存储过程是可以通过存储过程名字而被直接调用。

 触发器的优点

1.自动执行,他们在表的数据做了任何修改之后立即**

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

3.可以强制限制,这些限制比用check约束多赢的更复杂,与check约束不同的是,触发器可以引用其他表中的列。

触发器的种类

DDL触发器

DDL触发器当服务器或者数据库中发生数据定义语言(DDL)事件时被调用,如果要执行以下操作,可以使用DDL触发器:

1.要防止对数据库架构进行某些更改

2.希望数据库中发生某种情况以响应数据库架构中的更改

3.要记录数据库架构中的更改或者事件

DML触发器

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

常说的DML触发器种类:

1.INSERT触发器

2.UPDATE触发器

3.DELETE触发器

 

创建触发器

DML触发器

1.创建insert触发器

数据库视频-----触发器

示例:

			Create trigger T_addnum
			 on 学生信息
			For insert
			 as
			 update 班级信息 set班级人数=班级人数+1
			Where 班级编号=(select 所属班级 from inserted)

2.创建delete触发器

语法格式一样,只不过将关键字insert换成delete

示例:删除一条信息室会给操作人员显示删除的信息

			Create trigger T_deleterteacher
			On 教师信息
			For delete
			As
                            Select 姓名 as 被删除的教师姓名,性别,年龄,联系电话 from deleted

这里的deleted 是一个临时表,在insert中的inserted也是一个临时表。

3.创建update触发器

语法格式一样,只不过将关键字insert换成delete

示例:

			Create trigger T_update
			On 教师信息
			For update
			As
				If ( update(姓名) or update(性别))
				Begin
					Print ‘事务不能被处理,基础数据不能修改’
				End 
				Else
					Print ‘数据修改成功’

DDL触发器

语法格式

数据库视频-----触发器

示例:

			Create trigger T_notdelete
			On database 
			For drop_table,alter_table
			As
				Print ‘事务不嗯能够被处理,基础数据表不能被修改和删除’
				Rollback