• Sql Server触发器案例(初学者学习案例)


    万事都是从最简单的一句“hello world”开始,所以我接下里介绍的sql触发器学习案例也从最简单的案例来说明分析:

    1.首先创建表,这几张表你们也许很熟,在百度搜触发器案例都是使用这2张表

    Create Table Student(              --学生表 
            ID int primary key  identity(1,1),
            StudentID  int     --学号 
     ) 
    
    Create Table BorrowRecord(               --学生借书记录表 
            BorrowRecord   int identity(1,1),       --流水号   
            StudentID      int ,                    --学号 
            BorrowDate     datetime,                --借出时间 
            ReturnDAte     Datetime,                --归还时间 
    ) 

    2.添加测试数据

    INSERT into Student(studentID) values(1)
    INSERT into Student(studentID) values(2)
    INSERT into BorrowRecord(studentID,BorrowDate,ReturnDAte) VALUES(1,getdate(),getdate()+1)
    INSERT into BorrowRecord(studentID,BorrowDate,ReturnDAte) VALUES(2,getdate(),getdate()+1)

    3.编写一个解决如下问题的一个触发器:如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号);

      1)sql脚本:

        

    create Trigger truStudent 
    On Student                         --在Student表中创建触发器 
    for Update                         --为什么事件触发 
    As                                 --事件触发后所要做的事情 
    IF update(studentID)
    BEGIN
    declare @stuidnew int --从临时表Inserted记录新的的学号ID 
    declare @stuidold int --从临时表Deleted记录跟新以前旧的的学号ID
    select @stuidold=studentID from Deleted
    select @stuidnew=studentID from Inserted
    update BorrowRecord set studentID=@stuidnew where studentID=@stuidold
    print @stuidnew
    print @stuidold
    end   

    4.测试触发器

    update  Student set  StudentID=111 where studentID=1

    结果:把Student表studentID=1的一条记录修改为studentID=111,这个时候BorrowRecord表与Student对应StudengID那条记录的StudengID值也会改变(如图所示)

    重点是知道触发器主要的2张表:

    --触发器的操作 deleted表和inserted表的数据变化
    --插入操作(Insert) Inserted表有数据,Deleted表无数据
    --删除操作(Delete)
    --Inserted表无数据,Deleted表有数据
    --更新操作(Update)
    --Inserted表有数据(新数据),Deleted表有数据(旧数据)

    希望这个对初学者有帮助!

  • 相关阅读:
    江西理工大学南昌校区cool code竞赛
    喵哈哈村的魔法考试 Round #3 (Div.2) ABCDE
    项目管理概要记录
    JS开发引用HTML DOM的location和document对象
    Linux下触摸屏驱动程序分析
    敦泰FT6X06单层自容调屏
    FT5X06 如何应用在10寸电容屏(linux-3.5电容屏驱动简析&移植10寸电容屏驱动到Android4.2) (by liukun321咕唧咕唧)
    基于FT5x06嵌入式Linux电容触摸屏驱动
    Linux/Android多点触摸协议
    高通 8x12 添加 TP和按键
  • 原文地址:https://www.cnblogs.com/f12-liugang/p/5383360.html
Copyright © 2020-2023  润新知