• SQL 触发器


    定义

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

    作用

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

    一般用在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
  • 相关阅读:
    spring分布式事务学习笔记
    大家说说看针对微信的这个限制,如何吐槽????
    Easy-Mock 一个H5前端接口模拟神器
    CSS设计模式之三权分立模式篇 ( 转)
    引爆你的Javascript代码进化 (转)
    基于jQuery的软键盘
    基于jQuery的数字键盘插件
    支持触屏的zepto轮播图插件
    支持触屏的jQuery轮播图插件
    基于CSS3的3D旋转效果
  • 原文地址:https://www.cnblogs.com/zhangwei99com/p/6600051.html
Copyright © 2020-2023  润新知