• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    SQL Server触发器和事务用法示例

    本文实例讲述了SQL Server触发器和事务用法。分享给大家供大家参考,具体如下:

    新增和删除触发器

    alter trigger tri_TC on t_c
      for INSERT,delete
    as
    begin
      set XACT_ABORT ON
      declare @INSERTCOUNT int;
      declare @DELETECOUNT int;
      declare @UPDATECOUNT int;
      set @INSERTCOUNT = (select COUNT(*) from inserted);
      set @DELETECOUNT = (select COUNT(*) from deleted);
      set @UPDATECOUNT = ()
      if(@INSERTCOUNT > 0)
      begin
       insert into t_c2 select * from inserted;
      end
      else if(@DELETECOUNT > 0)
      begin
       delete t_c2 where exists(select temp.cid from deleted temp where temp.cid=t_c2.cid);
      end
    end
    
    

    更新触发器和事务

    事务主要用在数据的保护,在多表更新时,事务保存所有事务下的更新语句就不会提交,数据也就不能更新成功

    alter trigger tri_TC_Update on t_c
      for update
    as
    begin
      declare @delcount int;
      set @delcount = (select count(*) from deleted);
      if(@delcount > 0)
      begin
       begin transaction triUpdate --定义事务
       declare @cname varchar(100);
       select @cname = cname from inserted; --保存更新后的内容
       update t_c2 set cname = @cname where cid = (select cid from deleted); --更新
       if (@@error > 0)
       begin
        rollback transaction triUpdate; --事务回滚
       end
       else
       begin
        commit transaction triUpdate;  --事务提交
       end
      end
    end
    
    

    存储过程

    if(exists(select name from sysobjects s where s.name='pro_fun' and s.type='p'))
      drop procedure pro_fun
    go
      create procedure pro_fun
    as
      select * from table
    go
    exec pro_fun
    
    

    游标

    declare @qybh varchar(10)
    declare cur cursor for
      select distinct qybh from PJ_EnterpriseInput
    open cur
    fetch next from cur into @qybh
    while @@fetch_status = 0
     begin
      print(@qybh)
      fetch next from cur into @qybh
     end
    close cur
    deallocate cur
    
    

    视图

    alter view CreateView
    as
     select qybh from CreateView
    go
    
    

    定义方法

    alter function funName(@str1 varchar(10),@str2 varchar(10))
    returns varchar(10)
    as
    begin
      declare @returnStr varchar(10)
      set @returnStr = 'false'
      if(@str1 > @str2)
        set @returnStr = 'true'
      return @returnStr
    end
    select dbo.funName(... , ...)
    
    

    定义表变量

    declare @qybhTable table (id varchar(32),qybh varchar(30))
    insert into @qybhTable
    select id,qybh from PJ_EnterpriseInput
    select * from @qybhTable
    
    

    case when then 条件统计时的使用

    select
    sum(case when z.watchName='注册监理工程师' then 1 else 0 end),
    sum(case when z.watchName='xinza' then 1 else 0 end),
    sum(case when z.watchName='监理员' then 1 else 0 end)
    from zu_corjl z
    right join zu_corjltemp t on t.corID=z.corID
    
    

    希望本文所述对大家SQL Server数据库程序设计有所帮助。

    您可能感兴趣的文章:
    • MySQL中触发器的基础学习教程
    • 数据库触发器DB2和SqlServer有哪些区别
    • 深入浅析SQL Server 触发器
    • SqlServer触发器详解
    • MYSQL设置触发器权限问题的解决方法
    • mysql触发器(Trigger)简明总结和使用实例
    • sqlserver数据库使用存储过程和dbmail实现定时发送邮件
    • 使用sqlserver存储过程sp_send_dbmail发送邮件配置方法(图文)
    • sqlserver2008自动发送邮件
    • 通过sql存储过程发送邮件的方法
    • SQL server 表数据改变触发发送邮件的方法
    上一篇:sqlserver进程死锁关闭的方法
    下一篇:Win10 64位安装个人版SQL2000图文教程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    SQL Server触发器和事务用法示例 SQL,Server,触发器,和,事务,