zoukankan      html  css  js  c++  java
  • SQL server从入门精通----触发器

    -----触发器-------------------
            ---触发器:是一种特殊的存储过程,是在某个操作发生自动执行的一个操作
    select * from Q_user
    --------------insert 触发器--------------
        if(OBJECT_ID('tr_insert','tr')) is not null
        drop trigger tr_insert
        
        create trigger tr_insert
        on Q_user  --基于哪个表创建的触发器(就是哪个表在发生插入操作时自动触发)
        for insert --做什么操作时什么时候自动发生 
                 --操作upate insert delete 
                 --什么时候 for 正在操作时发生, after 操作之后时发生,instead of 废除当前的操作,执行触发的操作
        as        
        --在插Q_user时,同时,插入userInformation
      --   declare @uid varchar(30),@uName varchar(30) 
         --select @uid=uid,@uName=uName from  inserted  
         ----获取 刚刚操作之后生成对应的行
         ----(insert 代表触发的基于表)
         --insert into userInformation(uid,name) values(@uid,@uName)
         ----也可以insert select 语句
         insert into userInformation(uid,name) select uid,uName from inserted
         go
    
        --test 
        insert into Q_user(uName,uPwd) values('触发器','11111')
        select * from userInformation
        ----测试成功
    
        ------update触发器--------------
        在跟新Q_user标的同事跟新userInformation的 部分字段
        create trigger tr_update
        on Q_user
        after update
        as
          declare @uid varchar(30),@name varchar(30) 
          select @uid=uid,@name=uName from  inserted   --获取 刚刚操作之后生成对应的行
          update userInformation set name=@name where uid=@uid
            
        go
        update Q_user set uName='更新触发器' where uName='触发器'
        select * from userInformation
    
        ----delete触发器---------
        因为userInformation里面的uid 是Q_user里面的外键,在不使用级联删除的时候报错
    
        delete Q_user where uId='10002' --DELETE 语句与 REFERENCE 约束"DF_uid"冲突。该冲突发生于数据库"Qzone",表"dbo.userInformation", column 'uid'
        
         --级联 就是当一个表和另一个表存在外键的关系时 就可以使用级联更新与删除了
         --但前提是此表设置了级联
         --设置级联的方法 创建级联更新,,     在外键语句后面加   ON   DELETE   CASCADE  ON   UPDATE   NO CASCADE, 
                                                                 --foreign key (userId) references UserInfo(UserId) on delete cascade
            
         update  Q_user set uName='级联更新' where uName='更新触发器' 
         select * from Q_user ;
         select * from userInformation
           
         用触发器实现级联删除
    
    
        
    ---游标---------
            ---是处理数据的一种方法,可以查看或者处理结果集中的数据
            --利用游标来查询指定区间的数据 (比如查询10-40直接的数据包含10-40)
        
        print (4.5)
        
  • 相关阅读:
    Netty源码解析 -- 内存对齐类SizeClasses
    Netty源码解析 -- 零拷贝机制与ByteBuf
    Netty源码解析 -- ChannelOutboundBuffer实现与Flush过程
    Netty源码解析 -- ChannelPipeline机制与读写过程
    Oracle体系结构概述与SQL解析剖析
    SpringBoot整合Shiro+MD5+Salt+Redis实现认证和动态权限管理|前后端分离(下)----筑基后期
    SpringBoot整合Shiro+MD5+Salt+Redis实现认证和动态权限管理(上)----筑基中期
    shiro入门学习--授权(Authorization)|筑基初期
    shiro入门学习--使用MD5和salt进行加密|练气后期
    Shiro入门学习---使用自定义Realm完成认证|练气中期
  • 原文地址:https://www.cnblogs.com/CodeTaotao/p/4811974.html
Copyright © 2011-2022 走看看