触发器是指在修改制定表中的数据是执行的存储过程。
触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。
通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性或一致性。由于用户不能绕过触发器,所以可以用它来强制实施复杂的业务规则,以确保数据的完整性。
为什么要使用触发器?(优点)
**1.**触发器自动执行,他们在表的数据作了任何修改之后立即激活。
**2.**可以通过数据库中的相关表进行层叠更改。
**3.**可以强制限制,这些限制比CHECK约束所定义的更复杂。与CHECK约束不同的是,触发器可以引用其他表中的列
触发器的种类
DDL触发器:
1.要防止对数据库架构进行某些更改
2.希望数据库中发生某种情况以响应数据库架构中的更改
3.要记录数据库架构中的更改或者事件
DML触发器
1.是当数据库服务器中的发生数据操作语言(DML)事件时要执行的操作。
2.可以查询其他表,还可以包含复杂的Transact-SQL语句。
3.包括:INSERT触发器、UPDATE触发器、DELETE触发器。
触发器的创建
创建INSERT触发器
1.创建触发器
create trigger T_addnum
2.指定类型
for insert
3.指定基表
on 学生信息
4.as下面设置相对应的操作语句
创建DELETE触发器
创建过程与上边类似
create trigger T_deleteteacher
on 教师信息
for delete
as
selete 姓名 as 被删除的教室姓名,性别,年龄,联系电话from deleted
然后删除一条记录
delete from 教师信息 where 教师编号='2005001'
这样就触发了DELETE触发器
创建UPDATE触发器
update触发器可以看作是insert和delete的结合
create tregger t_UPDATE
on 教师信息
for update
as
if (update(姓名) or update(性别))
begin
print '事务不能被处理,基础数据不能修改!'
ROLLBACK TRANSACTION
end
else
print '数据修改成功'
if(update判断是否修改)
print 打印错误信息
ROLLBACK 回滚
创建DDL触发器
create trigger T_notdelete
on database
for drop_table,alter_table
as
print'事务不能被处理,基础数据表不能被修改和删除!'
ROLLBACK
如何管理触发器
无非是对触发器进行修改、删除、启用与禁用这些操作
一、操作界面命令管理
右击触发器命令菜单会出现这些命令
其中单机修改命令就i是用alter trigger语句进行对内容进行微调,修改update语句就可以对内容进行修改。
禁用之后触发器的图标就会显示一个向下的红色箭头,当禁用之后哦加入数据就不会增加。
二、直接使用语句
disable trigger t_add
```这样就禁用了,想要启用就把disable换成enable就可以
删除`drop trigger t_add`
**这些都是一些表层的理解,以后接触之后在深挖更深层的意思。当然,欢迎大神们前来指导与交流!**