SQL 触发器

findumars 阅读:72 2022-09-29 09:59:37 评论:0

定义

触发器是一种特殊类型的存储过程,不同于前面介绍的存储过程,它是通过事件进行触发自发调用执行,而存储过程是通过存储名调用

作用

当对表进行插入、修改、删除的时候,触发器就会自动执行存储过程

一般用在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        --用查询代替删除
View Code

作用是   保护数据的完整性,防止用户恶意删除

           还有设置权限,不允许其他人更改

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
View Code

级联删除(多个表删除)

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 的外检值    删除数据
View Code

本文参考链接:https://www.cnblogs.com/zhangwei99com/p/6600051.html
标签:数据库
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号