-- 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
分享到:
相关推荐
当 SET XACT_ABORT 为 ON 时,如果 Transact-SQL 语句产生运行时错误,整个事务将终止并回滚。为 OFF 时,只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。编译错误(如语法错误)不受 SET XACT_...
该PPT详述XACT_ABORT为ON和OFF的情况,讲解事务和批操作的区别
SQLserver存储过程异常处理
代码如下: create procedure test_tran as set xact_abort on —–用@@error判断,对于严重的错误,系统根本就不会执行随后对@@error的判断,会直接终止执行。所以设置set xact_abort on 是必要的 BEGIN TRANSACTION...
先来看一个概念: 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行... --使用存储过程执行事务需要开启XACT_ABORT参数(默认为OFF) delete from table1 where name='' --删除数据sql1 begin tra
IP-XACT作为IC领域IP专业化及SOC的广泛应用开发,即将成为基础标准
在数据库编程中,事务是经常需要用到的技术,在.net平台上,事务处理是非常好用的,但是在Sql Server数据库的存储过程中如何使用...BEGIN TRAN — 显示定义并开始一个事务SET XACT_ABORT ON — 表示遇到错误立即回滚 INSERT
11.11.4 使用存储过程、用户定义函数和视图来管理应用程序安全 11.11.5 使用一个代理用户来管理应用程序安全 11.11.6 使用应用程序角色来管理应用程序安全 11.12 小结 11.13 练习 第12章 SQL Server 2000中的XML支持...
此存储库构建用于训练Wolfram Mathematica xAct中最重要的GR软件包之一。 xAct是使用Wolfram语言的张量计算机代数的免费软件包套件。 xAct实现了用于快速处理索引的最新算法,并已根据当前的广义相对论几何方法进行...
DEC2006_XACT_x86.cab
11.11.4 使用存储过程、用户定义函数和视图来管理应用程序安全 11.11.5 使用一个代理用户来管理应用程序安全 11.11.6 使用应用程序角色来管理应用程序安全 11.12 小结 11.13 练习 第12章 SQL Server 2000中的XML支持...
DEC2006_XACT_x64.cab
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 可更新的...
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 可...
服务器端代理是保存在SQLServer主机中的一个只读存储过程,他的作用是接受客户端请求,读取在线事物日志块并通过网络传给客户端软件,由客户端软件来读取这些原始的数据块来完成Log Explore所提供的所有功能。...
运行时,如果批处理或事务中某个操作违反约束,系统默认只回退到产生错误的语句。通过打开XACT_ABORT开关,可使系统自动回滚产生该错误的当前事务。
可以自动处理查询语句中的列数 --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的的IP-XACT DOM。产品特点为生成IP-XACT文件IP-XACT目录IP-XACT资源标准: 架构文件: GitHub上的 贡献者(维护者)执照该库根据SPDX许可证标识符:Apache-2.0
最先进的调色板接口与Mathematica软件包的xAct套件 通过下拉菜单选择流形,张量,索引和导数运算符 实时所见即所得张量对象构造 VBundle约束的菜单驱动的索引选择 摘要和b和c索引 即时语法检查 一键式将格式化的...
DX9.0c_X86_最终版(网吧装上这个游戏基本没问题的了)