`
jackroomage
  • 浏览: 1198476 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

自己测试用的_存储过程中 SET XACT_ABORT 各种用法及显示结果 回滚

 
阅读更多

-- use  accmain

 

 

-- 删除表和过程
/**
 drop table gk_testa
 drop table gk_testb
 drop procedure sql_pro
**/
-- 创建表
/**
CREATE TABLE  gk_testa(
   id int identity(1,1) PRIMARY KEY,
   username Varchar(200),
   password  Varchar(200)
)

CREATE TABLE  gk_testb(
   id int identity(1,1) PRIMARY KEY,
   username Varchar(200),
   password  int
)
**/

--  删除数据
/**
 delete  from gk_testa
 delete  from gk_testb
**/

-- 1、  总体作为一个事务,整体提交或整体回滚,格式为:
 create procedure sql_pro AS
 SET XACT_ABORT ON
 begin TRAN
 insert into gk_testa(username,password)values('jack','123qwe');
 insert into gk_testb(username,password)values('jack','123qwe');
 COMMIT TRAN

-- 2、 每个语句作为一个事务,事务在错误行终止,错误行回滚,错误行之前的不回滚,格式为:
 create procedure sql_pro AS
 SET XACT_ABORT ON
 begin
 insert into gk_testa(username,password)values('jack','123qwe');
 insert into gk_testb(username,password)values('jack','123qwe');
 end

-- 3、带参数的存储过程(总体作为一个事务,整体提交或整体回滚),格式为:
 create procedure sql_pro (@usernamea Varchar(200), @passworda Varchar(200),@usernameb Varchar(200), @passwordb int)
 AS
 SET XACT_ABORT ON
 begin TRAN
 insert into gk_testa(username,password)values(@usernamea,@passworda);
 insert into gk_testb(username,password)values(@usernameb,@passwordb);
 COMMIT TRAN

--   执行过程(无参数)
exec  sql_pro;
--   执行过程(有参数)
exec  sql_pro 'aname','apassword','bname',222;


--   查询数据
 select * from gk_testa
 select * from gk_testb

 

 

 

================== 上面是sql Server 数据库测写法。

 

 

===================下面是参考的例子(各种数据库应该都支持吧)。

 

 


SET XACT_ABORT各种用法及显示结果
默认行为

  默认为SET XACT_ABORT OFF,没有事务行为。
SET XACT_ABORT ON

  SET XACT_ABORT ON分为两种:

  1、总体作为一个事务,整体提交或整体回滚,格式为:

SET XACT_ABORT ON
BEGIN TRAN
    --要执行的语句
COMMIT TRAN
GO

  2、每个语句作为一个事务,事务在错误行终止,错误行回滚,错误行之前的不回滚,格式为:

SET XACT_ABORT ON
BEGIN
    --要执行的语句
END
GO

测试
复制代码

--创建测试表
use MyDB
CREATE TABLE student
(   
        stuid int NOT NULL PRIMARY KEY,
        stuname varchar(50)
)
CREATE TABLE score
(
        stuid int NOT NULL REFERENCES student(stuid),
        score int
)
GO

--插入测试数据
INSERT INTO student VALUES (101,'zhangsan')
INSERT INTO student VALUES (102,'wangwu')
INSERT INTO student VALUES (103,'lishi')
INSERT INTO student VALUES (104,'maliu')
GO

---------------测试事务提交------------------
use MyDB
--只回滚错误行,语句还继续执行
SET XACT_ABORT OFF
BEGIN TRAN
    INSERT INTO score  VALUES (101,90)
    INSERT INTO score VALUES (102,78)
    INSERT INTO score VALUES (107,76) /* Foreign Key Error */
    INSERT INTO score VALUES (103,81)
    INSERT INTO score VALUES (104,65)
COMMIT TRAN
GO
/*
stuid       score
----------- -----------
101         90
102         78
103         81
104         65

(4 row(s) affected)
*/

use MyDB
--事务终止并全部回滚
SET XACT_ABORT ON
BEGIN TRAN
    INSERT INTO score  VALUES (101,90)
    INSERT INTO score VALUES (102,78)
    INSERT INTO score VALUES (107,76) /* Foreign Key Error */
    INSERT INTO score VALUES (103,81)
    INSERT INTO score VALUES (104,65)
COMMIT TRAN
GO
/*
stuid       score
----------- -----------
(0 row(s) affected)
*/

use MyDB
--事务在错误行终止,错误行回滚,错误行之前的不回滚
SET XACT_ABORT ON
BEGIN
INSERT INTO score  VALUES (101,90)
    INSERT INTO score VALUES (102,78)
    INSERT INTO score VALUES (107,76) /* Foreign Key Error */
    INSERT INTO score VALUES (103,81)
    INSERT INTO score VALUES (104,65)
END
GO
/*
stuid       score
----------- -----------
101         90
102         78
(2 row(s) affected)
*/

 

 

 

 

 

来源:http://www.cnblogs.com/rob0121/articles/2320932.html

分享到:
评论

相关推荐

    SQL事务设置SET XACT_ABORT后正确回滚

     当 SET XACT_ABORT 为 ON 时,如果 Transact-SQL 语句产生运行时错误,整个事务将终止并回滚。为 OFF 时,只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。编译错误(如语法错误)不受 SET XACT_...

    SQLSERVER事务和XACT_ABORT专题

    该PPT详述XACT_ABORT为ON和OFF的情况,讲解事务和批操作的区别

    SQLserver存储过程异常处理.txt

    SQLserver存储过程异常处理

    SQL2000 事务回滚问题探讨

    代码如下: create procedure test_tran as set xact_abort on —–用@@error判断,对于严重的错误,系统根本就不会执行随后对@@error的判断,会直接终止执行。所以设置set xact_abort on 是必要的 BEGIN TRANSACTION...

    浅析SQL Server中包含事务的存储过程

    先来看一个概念:  数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行... --使用存储过程执行事务需要开启XACT_ABORT参数(默认为OFF)  delete from table1 where name='' --删除数据sql1  begin tra

    IP-XACT standard

    IP-XACT作为IC领域IP专业化及SOC的广泛应用开发,即将成为基础标准

    浅析SQL存储过程和事务处理

    在数据库编程中,事务是经常需要用到的技术,在.net平台上,事务处理是非常好用的,但是在Sql Server数据库的存储过程中如何使用...BEGIN TRAN — 显示定义并开始一个事务SET XACT_ABORT ON — 表示遇到错误立即回滚 INSERT

    SQLServer2000高级编程技术-已添加书签,想学存储过程、SQL编程务必要看,分析非常透彻

    11.11.4 使用存储过程、用户定义函数和视图来管理应用程序安全 11.11.5 使用一个代理用户来管理应用程序安全 11.11.6 使用应用程序角色来管理应用程序安全 11.12 小结 11.13 练习 第12章 SQL Server 2000中的XML支持...

    xAct:此存储库构建用于培训Wolfram Mathematica,xAct中最重要的GR软件包之一

    此存储库构建用于训练Wolfram Mathematica xAct中最重要的GR软件包之一。 xAct是使用Wolfram语言的张量计算机代数的免费软件包套件。 xAct实现了用于快速处理索引的最新算法,并已根据当前的广义相对论几何方法进行...

    DEC2006-XACT-x86.cab

    DEC2006_XACT_x86.cab

    SQLServer2000高级编程技术(part02)-想学存储过程 SQL编程 务必要看

    11.11.4 使用存储过程、用户定义函数和视图来管理应用程序安全 11.11.5 使用一个代理用户来管理应用程序安全 11.11.6 使用应用程序角色来管理应用程序安全 11.12 小结 11.13 练习 第12章 SQL Server 2000中的XML支持...

    DEC2006-XACT-x64.cab

    DEC2006_XACT_x64.cab

    sqlserver2000基础(高手也有用)

    15.4.4 XACT_ABORT与RAISERROR的疑难解答 477 15.5 游标处理疑难解答 479 15.5.1 全局游标与本地游标 479 15.5.2 检查指定的游标是否存在 480 15.5.3 事务提交或者回滚对游标的影响 482 15.5.4 可更新的...

    SQL SERVER 2000开发与管理应用实例

    15.4.4 XACT_ABORT与RAISERROR的疑难解答 477 15.5 游标处理疑难解答 479 15.5.1 全局游标与本地游标 479 15.5.2 检查指定的游标是否存在 480 15.5.3 事务提交或者回滚对游标的影响 482 15.5.4 可...

    sql2000 Log Explorer4.2(含注册码)+汉化

    服务器端代理是保存在SQLServer主机中的一个只读存储过程,他的作用是接受客户端请求,读取在线事物日志块并通过网络传给客户端软件,由客户端软件来读取这些原始的数据块来完成Log Explore所提供的所有功能。...

    SQL Server事务和并发控制.ppt

    运行时,如果批处理或事务中某个操作违反约束,系统默认只回退到产生错误的语句。通过打开XACT_ABORT开关,可使系统自动回滚产生该错误的当前事务。

    动态sql语句动态处理输出列数

    可以自动处理查询语句中的列数 --1.打开游标 l_cursor := dbms_sql.open_cursor; --2.解析游标 dbms_sql.parse(l_cursor,'select bus_type as 流程名称,st_center as 结算中心,st_department as 编制部门,bus_desc ...

    pyIPXACT:使用Python的IEEE 1685-2014的IP-XACT DOM

    pyIPXACT-使用Python的的IP-XACT DOM。产品特点为生成IP-XACT文件IP-XACT目录IP-XACT资源标准: 架构文件: GitHub上的 贡献者(维护者)执照该库根据SPDX许可证标识符:Apache-2.0

    xPrint:xAct的xPrint

    最先进的调色板接口与Mathematica软件包的xAct套件 通过下拉菜单选择流形,张量,索引和导数运算符 实时所见即所得张量对象构造 VBundle约束的菜单驱动的索引选择 摘要和b和c索引 即时语法检查 一键式将格式化的...

    DX9.0c_X86_最终版(网吧装上这个游戏基本没问题的了)

    DX9.0c_X86_最终版(网吧装上这个游戏基本没问题的了)

Global site tag (gtag.js) - Google Analytics