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' 备份表存储过程
  • 相关阅读:
    数组指针:a pointer to an array,即指向数组的指针
    爬取人人网新鲜事python版本
    python的专用类方法
    北邮校园网管登陆python脚本
    北邮人论坛python模拟登录程序
    结对项目四则运算“软件”升级版
    了解大数据的特点、来源与数据呈现方式
    第一次作业:准备
    第二次作业:分布式版本控制系统Git的安装与使用
    第三次作业 四则运算
  • 原文地址:https://www.cnblogs.com/suqifeng/p/3352943.html
Copyright © 2011-2022 走看看