数据库视频(五)-触发器

- 1.数据库对象——触发器
触发器是一个在修改指定表中的数据时的存储过程。
- 2.为什么要使用触发器?
触发器自动执行,它们在表的数据作了任何修改之后立即激活。
触发器可以通过数据库中的相关表进行层叠更改。这比直接把代码写在前台做法更安全合理。
触发器可以强制限制,这些限制比用CHECK约束所定义的更复杂。与CHECK约束不同的时,触发器 可以引用其他表中的列。
- 3.触发器的种类:
(1).DDL触发器
DDL触发器当服务器或者数据库中发生数据定义语言事件时将被调用。
执行一下操作,可以使用DDL触发器:
要防止对数据库架构进行某些更改
希望数据库发生某种情况一响应数据库架构中的更改
要记录数据库架构中的更改或者事件
(2).DML触发器
DML触发器时当数据库服务器中发生数据操作语言事件时要执行的操作。通常所说的DML触发器主要包括三种:INSERT触发器、UPDATE触发器、DELETE触发器。
- 4.创建触发器:
(1)创建insert触发器:

create trigger T_addnum
on 班级信息
for insert
as
 update 班级信息 set 人数=人数+1
 where 班级名称=(select 所属班级 from #inserted)

(2)创建DELETE触发器:

create trigger T_deleteteacher
on 辅导员信息
for delete
as 
  select 姓名 as 被删除的辅导员姓名,性别,人数,辅导员编号 from deleted 0

(3)创建UPDATE触发器:

create trigger t_update
on 辅导员信息
for update 
as 

 if (update(姓名)or update(性别))
 begin 
    print'事务不能被处理,基础数据不能修改!' 
    rollback transaction
 end 
 else
    print'数据修改成功!'

(4)创建DDL触发器:

create trigger t_notdelete
on database 
for drop_table,alter_table 
as 

print'事务不能被处理,基础数据表不能被修改和删除'
rollback

- 5.触发器递归:
任何触发器都可以包含影响同一个表或另一个表的UPDATE、INSERT或DELETE语句。递归触发器很复杂,必须经过有条理的设计和全面的测试。所有触发器一起构成一个大事务。触发器最多只能递归16层。这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_41306240/article/details/81116089