• 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拼音截图未命

  • 相关阅读:
    Git代码托管
    Git安装配置
    【知识共享】SSIS的典型应用
    【转贴】正确实施BI项目的四条建议
    SAP ABAP 常用事务代码
    【转贴】WP7 离线升级方法附错误解决方案
    BO Universe(语义层)设计相关
    【转贴】SAP学习经验谈
    七个不放过和四项原则
    SAP BO帮助文档下载页面
  • 原文地址:https://www.cnblogs.com/wllhq/p/4225015.html
Copyright © 2020-2023  润新知