SQL server从入门精通----触发器
                        
                            时间:2021-07-01 10:21:17
                            帮助过:1人阅读
							                        
                     
                    
                    
                    ---触发器-------------------
        ---触发器:是一种特殊的存储过程,是在某个操作发生自动执行的一个操作
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)
    
 
SQL server从入门精通----触发器
标签: