zoukankan      html  css  js  c++  java
  • SQL Server ——触发器

    触发器是一类特殊的存储过程,在对表UPDATE、INSERT或DELETE语句时自动执行。

    例题1.

    --例题1.利用触发器显示‘改变了一条数据’
    use mydb 
    go
    create trigger tr_info_add on info
    for insert,delete
    as
    print '改变了一条数据'
    go

    例题2.

    触发器练习2

    例题3.

    --例题3:水果表改变numbers列时,向orderdetails表中添加数据水果编号,数量变化。
    
    go 
    create trigger tr_fruit_buy2 on fruit
    for update, insert ,delete
    as
    --操作之前列的数据
    declare @num1 int
    select @num1=numbers from deleted
    --操作之后的数据
    declare @num2 int
    select @num2=numbers from inserted
    --数据差
    declare @num int
    set @num=@num1-@num2
    --从deleted表中取出水果编号
    declare @code varchar(50)
    select @code=ids from deleted
    --将数据差、水果编号输入orderdetails表
    insert into orderdetails (ordercode,[count]) values (@code,@num)
    go
    
    select * from Fruit 
    select * from OrderDetails 
    --添加触发器,执行以下语句,触发两个触发器tr_fruitbuy和tr_fruit_buy2结果如下
    update Fruit set numbers=numbers-5 where Ids ='k002'
    select * from OrderDetails

    QQ拼音截图未命名

    例题4

    --例题:instead of触发器,删除info表的数据时,先删除work和family的数据,再删info相应的数据
    select * from Info 
    select * from Work 
    select * from Family 
    go
    
    create trigger tr_person_deletet on info
    instead of delete
    
    as
    --删除work相关数据
          --取出需要的delete信息
    declare @code varchar(50)
    select @code=code from deleted
          --删除
    delete from Work where InfoCode =@code 
    
    --删除family相关数据
    delete from Family where InfoCode =@code 
    --最后删除info表中的相关数据(info表是family表和work表的主表,最后才能执行删除)
    delete from info where code=@code
    go
    
    --添加触发器后执行删除
    delete from Info where Code ='p002'

    QQ拼音截图未命

  • 相关阅读:
    怎样防止应用因获取IDFA被AppStore拒绝
    多校第九场Arithmetic Sequence题解
    Hadoop文件解压缩
    FZU 2087 统计树边【MST相关】
    hdu2647(拓扑排序)
    jsp自己主动编译机制
    AsyncTask的原理和缺点
    C语言之文件操作08——总结
    Android API 文档 离线秒开方法
    在Windows8系统下exe格式会计课件下载播放帮助图解
  • 原文地址:https://www.cnblogs.com/wllhq/p/4225015.html
Copyright © 2011-2022 走看看