zoukankan      html  css  js  c++  java
  • sql 触发器

    创建insert触发器

    use studb
    go
    if exists(select name from sysobjects where name='trig_transinfo')
    drop trigger trig_transinfo
    go
    create trigger trig_transinfo
    on  transinfo
    for insert
    as
    declare @ type char(4),@outmoney money
    declare @mycardid char(10),@balance money
    select @type=transtype,@outmoney=transmoney,@mycardid=cardid from inserted
    if(@type='支取')
    update bank set currentmoney=currentmoney-@outmoney where cardid=@mycardid
    else
     update bank set currentmoney=currentmoney+@outmoney where cardid=@mycardid

    print '交易成功!交易金额',+convert(varchar(20),@outmoney)
    select @balance=currentmoney from bank where cardid=@mycardid
    print '卡号 '+ @mycardid +'金额' + convert(varchar(20),balance)
    go
    set nocount on
    insert into transinfo(cardid,transtype,transmoney) values('1001 0001','支取',200)
    insert into transinfo(cardid,transtype,transmoney) values('1001 0002','存入',50000)
    select * from bank
    select * from transinfo

    创建delete触发器

    use studb
    go
    if exists(select name from sysobjects where name='trig_delete_transinfo')
    drop ttrigger trig_delete_transinfo
    go
    create trigger trig_delete_transinfo
    on transinfo
    for delete
    as
    print '开始备份数据,请稍候.....'
    if not exists(select * from sysobjects where name='backuptable')
    select * into backuptable from deleted
    else
    insert into backuptable select * from deleted
    print '备份数据成功,备份表中的数据为:'
    select * from backuptable
    go

    set nocount on
    delete transinfo
    print '交易信息表中的数据'
    select * from transinfo

    创建update触发器
    use studb
    go
    if exists(select  name from sysobjects where name='trig_update_bank')
    drop trigger trig_update_bank
    go
    create trigger trig_update_bank
    on bank
    for update
    as
    declare @beforemoney money,@aftermoney money
    select @beforemoney=currentmoney from deleted
    select @aftermoney=currentmoney from inserted
    if abs(@aftermoney-beforemoey)>20000
    begin
    print '交易金额' + convert(varchar(8),abs(@aftermoney-@beforemoney))
    raiserror('没笔交易不能超过2万元,交易失败',16,1)
    roolback transaction
    end

    go
    set nocount on
    update bank set currentmoney=currenymoney+25000 where cardid='1000 0001'
    go
    insert  into transinfo(cardid,transtype,transmoney) values('1000 0002','支取',30000)
    insert into  transinfo(cardid,transtype,transmoney) values('1000 0002','存入',5000)
    go
    print '帐户信息表中的数据'
    select * from bank
    print '交易信息表中的数据'
    select * from transinfo

  • 相关阅读:
    Gson简要使用笔记
    (一)微信开发环境搭建
    Hibernate 注解 字段不映射的注解
    Hibernate 使用注解后没发现建表
    Hibernate 注意命名与数据库关键字的冲突 处理方法
    struts2不能通过ONGL方式取出request中的Atrribute
    Android 两个Activity进行数据传送 发送
    Android 设置隐式意图
    Android 隐式意图 让用户选择一个浏览器访问网址
    Android 判断是否联网 是否打开上网
  • 原文地址:https://www.cnblogs.com/benzhang/p/1458786.html
Copyright © 2011-2022 走看看