码迷,mamicode.com
首页 > 数据库 > 详细

SqlServer批量刷数据执行事务回滚语句备份

时间:2016-09-30 01:36:41      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

      企业进行对数据库执行刷数据工作,一段很长的语句希望同时成功或者失败时用到。

1.建立测试环境

/************************************************************
 * Code formatted by SoftTree SQL Assistant ?v6.5.278
 * Time: 2016/9/29 21:33:55
 ************************************************************/
---建立测试环境
CREATE DATABASE TestTransaction
USE TestTransaction
GO
CREATE TABLE testTable
(
    testId       INT PRIMARY KEY IDENTITY,
    testName     VARCHAR(20) NOT NULL
);

2.执行事务

---开始

BEGIN TRY
    BEGIN TRANSACTION
        INSERT INTO testTable VALUES(3)     
         INSERT INTO testTable VALUES(5)
         INSERT INTO testTable VALUES( (SELECT testName FROM testTable WHERE testId=1))---将id为1的记录执行insert
         INSERT INTO testTable VALUES( (SELECT MAX(testName) FROM testTable WHERE testId=1))---聚合函数保证返回记录只有一条即可
    COMMIT TRANSACTION
END TRY
BEGIN CATCH
    ROLLBACK TRANSACTION
    PRINT 有语句插入失败,事务已回滚
END CATCH

测试过提交和回滚事务正常。

3.辅助语句

---删除表,还原自增从1开始
TRUNCATE TABLE testTable

---显示插入自增列
SET IDENTITY_INSERT testTable ON
INSERT INTO testTable(testid,testName) VALUES(32,5)
SET IDENTITY_INSERT testTable off

注意:

1.set identity_insert只对当前会话生效。

2.set identity_insert 表名 ON 设置后,必须显示指定Id(Insert into 里面要写入id的列),否则插入错误。如insert into table_name values(‘111‘)将报错。

   向自增ID插入指定值。 报错:“当 IDENTITY_INSERT 设置为 OFF 时,不能为表 ‘ ‘ 中的标识列插入显式值”。

   插入语句未显示指定ID。 报错:“仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表‘ ‘中的标识列指定显式值”。

SqlServer批量刷数据执行事务回滚语句备份

标签:

原文地址:http://www.cnblogs.com/CallmeYhz/p/5922154.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!