BEGIN TRAN;
2024-10-21 12:53:20
USE master Create Database TestDb on Primary ( name='TestDb_data', filename='G:\TempData\Db\TestDb_data.mdf', size=5MB, filegrowth% ) Log on ( name='TestDb_log', filename='G:\TempData\Db\TestDb_log.ldf', size=1MB, filegrowth% )
USE TestDb ---创建表Table1 IF OBJECT_ID('Table1','U') IS NOT NULL DROP TABLE Table1 GO CREATE TABLE Table1 (ID INT NOT NULL PRIMARY KEY, Age )); -- 满足条件才会插入; GO
--测试事务 BEGIN TRANSACTION INSERT INTO Table1(ID,Age) ,) INSERT INTO Table1(ID,Age) ,) --【注意】,小于上面设置的范围 INSERT INTO Table1(ID,Age) ,) INSERT INTO Table1(ID,Age) ,) COMMIT TRANSACTION GO delete Table1 --删除数据,方便演示数据;
---第二条记录没有执行成功,其他的都执行成功
SELECT * FROM Table1
--所以并不是事务中的任意一条语句报错整个事务都会回滚,其它的可执行成功的语句依然会执行成功并提交
--检查全局变量@@ROWCOUNT的值,若等于0,则执行回滚操作,实现事务中的任意一条语句报错时,整个事务都回滚;
@@ROWCOUNT (Transact-SQL)
Returns the number of rows affected by the last statement. If the number of rows is more than 2 billion, use ROWCOUNT_BIG.
See Also:
BEGIN TRAN; ,) ; BEGIN ROLLBACK TRAN;GOTO EndTran;END; ,) ; BEGIN ROLLBACK TRAN;GOTO EndTran;END; ,) ; BEGIN ROLLBACK TRAN;GOTO EndTran;END; ,) ; BEGIN ROLLBACK TRAN;GOTO EndTran;END; EndTran: BEGIN AS Success;END ELSE AS Success;END END
突破只能在同一sql实现事务,在多个方法中传递参数DbTransaction,实现事务:
MSSQL事务在C#程序端的使用 - catcherx - 博客园
http://www.cnblogs.com/catcherx/p/6051231.html
http://www.cnblogs.com/catcherx/p/6051231.html
最新文章
- [Android]Message,MessageQueue,Looper,Handler详解+实例
- Java数组(初学者必看)
- BZOJ1576 (最短路+并查集)
- ADF_ADF Faces系列2_使用JSF开发基于Ajax的用户界面:ADF Faces富客户端组件简介(Part2)
- easy ui 下拉级联效果 ,下拉框绑定数据select控件
- AS3.0声明静态属性和静态方法
- Andoid 学习笔记 AppCompatEditText
- 【手机安全卫士01】项目Splash页面的开发与设计
- Oracle 中的Pivoting Insert用法
- 禁用物料不允许BOM
- centos安装docker容器
- 201521123019 《Java程序设计》第7周学习总结
- json中关于jo.[]中字符串一致的问题
- zeppelin0.7.3源码编译
- 使用Epplus生成Excel 图表
- docker+gitlab+gitlab-runner部署
- Openlayer3之C++接口在javaScript的封装使用
- classmethod作用
- java-03-动手动脑
- Java线程及线程池状态