重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
begin tran
成都创新互联是一家集网站建设,德令哈企业网站建设,德令哈品牌网站建设,网站定制,德令哈网站建设报价,网络营销,网络优化,德令哈网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
。。。。。。
在存储过程后面加上:
if @@error0
rollback tran
else
commit tran
放在事务里面就可以回滚哦!
sqlserver_update_事务回滚
begin tran
update
if @@rowCount !=约定数
goto err
commit tran
return;
err:
rollback tran
return;
请参阅!
如何启动Transaction; 共有三种方式
1.自动transaction
每句statement都是一个transaction.例一个update指令更新多笔纪录, 要就全部成功, 只要失败,全部会回复原值.
2.ExplicitTransaction
以Begin Transaction开始(开启)
3.ImplicitTransaction (建议不要用)
以Set Implicit_Transaction ON
如何结束Transaction; 共有三种方式
1. COMMIT Transaction(提交)
Transaction期间的任何修改,都会保证到数据库中
2. ROLLBACK Transaction(回滚)
数据会回复Transaction前状态
3. KILL SPID 强迫停止, 会rollback
事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
当一个事务的某一个操作发生问题时,整个事务可以回滚掉,就像没有做任何操作一样。这就是事务回滚。
如果一个事务的所有操作均成功,则就可以提交事务,保证事务的完整性。
应用程序主要通过指定事务启动和结束的时间来控制事务。
以MS SQL Server的Transac-SQL语言为例,
事务启动:
BEGIN TRAN [ SACTION ] [ transaction_name | @tran_name_variable [ WITH MARK [ 'description' ] ] ]
结束事务
可以使用 COMMIT 或 ROLLBACK 语句结束事务。
1 事务的提交
BEGIN TRANSACTION T1
INSERT tabel1 ...
UPDATE table2 ...
...
/* 当所有成功操作完成,提交事务 */
COMMIT TRAN T1
2 事务的回滚
BEGIN TRANSACTION T1
INSERT tabel1 ...
...
/* 当发生错误或事务被取消, 回滚事务 */
ROLLBACK TRAN T1
首先性能肯定受影响,因为要反向回滚操作。
以sqlserver为例,如果是插入操作,回滚期间锁表,而且一般级别数据库消耗时间接近1:3。如果插入进行了1小时有可能要超过3小时多来完成回滚,此时不要强行关闭数据库或者杀死进程,也为无论如何为了保持acid特性也不会中止回滚只能等。
sqlserver 的编辑器一般都是默认自动提交,也就是说你删除后,就自动提交了;不能回滚。
当然如果你设置成不是默认提交的话,那么你在提交之前可以回滚。
而如果是程序代码中删除的话,看你有没有启用事务,如果没有启用事务,那么一般也是默认提交的,如果启用事务,那么再提交前可以回滚,如果已经提交了,那么就回滚不了了。