zoukankan      html  css  js  c++  java
  • SQL9:触发器和游标

    --触发器
    --在保存数据时,完成备份
    select * from TblOrders

    create trigger bak_order
    on tblorders
    after insert
    as
    begin
    insert into tblOrders_bak(oname,ocount,oprice)
    select oname,ocount,oprice from inserted
    end

    alter trigger update_order
    on tblorders
    instead of update
    as
    begin
    update tblOrders_bak set ocount=(select ocount from inserted)
    where oname in (select oname from inserted)
    end

    select * from TblOrders
    where oname='ff'
    select * from tblOrders_bak
    where oname='ff'

    drop trigger update_order

    insert into TblOrders values('ff',10,20)

    update TblOrders set ocount=20 where oname='ff'

    -》触发器:
    当有关联操作发生的时候
    比如:下订单时,创建中的商品数量需要减少
    比如:退票时,总的票量要增加
    属于DDL
    关键字trigger
    关键:确定要将触发器建立在哪个表上on
    执行时间:after:在触发源执行完成后执行触发器中的代码
    instead of:在触发源执行前执行触发器中的代码,同时触发源的操作被废弃
    触发源:insert update delete
    临时表:inserted deleted

    ----============游标
    --游标的定义
    declare s1 cursor for select oname,ocount,oprice from tblorders
    --在访问游标中某行的数据时,需要声明变量
    declare @name nvarchar(10)
    declare @count int
    declare @price money
    --打开游标
    open s1
    --通过游标从结果集中取数据,注意:每次取一行的值
    fetch s1 into @name,@count,@price
    while(@@FETCH_STATUS=0)
    begin
    set @price=@price+RAND(100)
    update TblOrders set oprice=@price where oname=@name and ocount=@count
    fetch s1 into @name,@count,@price
    end
    --关闭游标
    close s1
    --释放游标
    deallocate s1

  • 相关阅读:
    树莓派摄像头测试
    mqtt搭建基础教程()
    win10开始图标点击无效
    【python学习笔记:Django】7.数据库模型浅析
    【python学习笔记:Django】6.MySQL那些坑
    Ubuntu分区扩容
    Wine的中文显示与字体设置
    从有序矩阵M x N中找出是否包含某一个数,要求时间复杂度为O(M+N)
    之字形打印矩阵
    双向链表反转
  • 原文地址:https://www.cnblogs.com/poli/p/4109217.html
Copyright © 2011-2022 走看看