zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    《高效能人士的七个习惯》读书笔记
    《精进》读书摘要
    讲述测试自己的故事
    搭建项目自动化框架的搭建、改进与思考
    真是个信息爆炸的世界
    C#中的WebBrowser控件的使用
    C#动态调用webService出现 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。
    C#抓取网面上的html内容(JS动态生成的无法抓取)
    SQL还原数据库后,数据库显示受限制用户解决方法
    [Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
  • 原文地址:https://www.cnblogs.com/zhangwei99com/p/6600051.html
Copyright © 2011-2022 走看看