定义
触发器是一种特殊类型的存储过程,不同于前面介绍的存储过程,它是通过事件进行触发自发调用执行,而存储过程是通过存储名调用
作用
当对表进行插入、修改、删除的时候,触发器就会自动执行存储过程
一般用在check约束或者更加复杂约束上面
create tringger 触发器名称 //定义的名字的时候 一般是先把表和进行的动作合一起 例如 user_delete 对user表进行删除
意思:创建 触发器 名字
on 表名
在 那个表 进行触发
for 动作
进行 什么动作
as
执行的代码
例如:
create trigger users_delete on users for delete as select *from users --进行删除完事之后 查询
可以有多个多个动作 多个触发器 每个动作只能只有一个触发器
还有一个触发器是 把上面的for 改为 instead of 不是进行触发 而是代替触发
例如:
create trigger users_delete on users instead of delete --这里的代替 删除 as select *from users --用查询代替删除
作用是 保护数据的完整性,防止用户恶意删除
还有设置权限,不允许其他人更改
delete的过去式是deleted
update的过去是updated
insert的过去是inserted
create trigger users_deleted
on useres
instead of delete
as
select * from deleted
这里是查询 要删除的数据 只是没有删除那条数据 只是展示出来
下面是设置权限
create trigger users_deleted on users instead of delete as declare @a nvarchar; --定义变量 select @a=ids from deleted; --变量 = 要删除的一个主键值 select @a; --赋值 if @a=5 --分支语句 begin select'太丑了,不能删' --不能删除,并且提示 end else begin delete from users where ids=@a --进行删除 end
级联删除(多个表删除)
create trigger users_delete on users instead of delete as declare @a nvarchar; --定义变量 select @a= ids from deleted; --查询要删除users的数据 delete from users where ids=@a;--用users 的 主键值 删除数据 delete from car where no=@a; --用car 的外检值 删除数据