zoukankan      html  css  js  c++  java
  • SQL 事物


    /*
    创建表*/ CREATE TABLE a ([id] int IDENTITY(1,1) PRIMARY KEY , [Name] varchar(50) ) CREATE TABLE B ( [id] int IDENTITY(1,1) PRIMARY KEY, [Type] varchar(50), [aid] int Foreign key ([aid]) references a(ID) ) --创建存储过程 CREATE PROCEDURE [dbo].[ADD] (@strName varchar(50), @strType varchar(50)) as DECLARE @aid int begin tran begin try INSERT INTO A ([name]) VALUES (@strName) --DECLARE @aid int=SELECT IDENT_SEED('A') INSERT INTO B ([type],[aid]) VALUES(@strType,@@identity) end try begin catch if @@trancount > 0 rollback tran end catch if @@trancount > 0 commit tran --执行存储过程 EXEC [ADD] 'fff','fff' --查询结果 SELECT * FROM A SELECT * FROM b
    --1. 在事务语句最前面加上set xact_abort on
       set xact_abort on
       begin tran
          update statement 1 ...
          update statement 2 ...
          delete statement 3 ...
       commit tran
       go
    --2. 在每个单独的DML语句执行后,立即判断执行状态,并做相应处理。
     begin tran
          update statement 1 ...
          if @@error <> 0 begin
             rollback tran
             goto labend
          end
          delete statement 2 ...
          if @@error <> 0 begin
             rollback tran
             goto labend
          end
       commit tran
          labend:
       go
    --3. 在SQL Server 2005中,可利用 try...catch 异常处理机制
       begin tran
       begin try
          update statement 1 ...
          delete statement 2 ...
       end try
       begin catch
          if @@trancount > 0
             rollback tran
       end catch
       if @@trancount > 0
          commit tran
       go
    set xact_abort on --开启默认系统事物 非自定义错误回滚
    begin tran  
    -----------------------------------
    declare @tbname nvarchar(100)
    declare @create nvarchar(500)
    declare cur1 cursor for 
    select name from sysobjects where xtype='U' AND ( charindex('louxiqu',name)>0 OR charindex('louxinqu',name)>0  )
    OPEN cur1
    fetch cur1 into @tbname
    while  @@FETCH_STATUS = 0
    BEGIN
    --------------------------
    if   object_id('MCJZYFDATA.dbo.'+@tbname) is not null  
    BEGIN
    if   object_id('Bak_MCJZYFDATA.dbo.'+@tbname) is not null  
    BEGIN
    EXEC(' DROP TABLE Bak_MCJZYFDATA.dbo.'+@tbname+'' );
    END
    SET @create=' SELECT * INTO Bak_MCJZYFDATA.dbo.'+@tbname+' from MCJZYFDATA.dbo.'+@tbname
    EXEC(@create);
    EXEC(' DROP TABLE MCJZYFDATA.dbo.'+@tbname+'' );
    --print @create
    END
    --------------------------
    fetch cur1 INTO @tbname
    end
    close cur1
    deallocate cur1
    -----------------------------------
    commit tran
    go
    
    
    -------------------
    
    
    ALTER Proc [dbo].[BakTable](
    @tbname Nvarchar(500)
    )
    as
    
    Declare @sql Nvarchar(2000)
    Declare @baktbname Nvarchar(500)
    SET @baktbname=@tbname+replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
    SET @sql=' SELECT * INTO Bak_MCJZYFDATA.dbo.'+@baktbname+' from MCJZYFDATA.dbo.'+@tbname
    exec(@sql)
    
    
    --exec BakTable 'Config' 备份表存储过程
  • 相关阅读:
    我的2015---找寻真实的自己
    JQuery日记 5.31 JQuery对象的生成
    UVA
    elk 日志分析系统Logstash+ElasticSearch+Kibana4
    OAF 中下载使用XML Publisher下载PDF附件
    page上BeanId与ActionType中的ParameterId
    OAF 功能中的参数含义
    EBS管理员为供应商创建新联系人流程
    EBS Workflow参考资料
    采购模块设置快码
  • 原文地址:https://www.cnblogs.com/suqifeng/p/3352943.html
Copyright © 2011-2022 走看看