数据库视频-----触发器
程序员文章站
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