sqlserver事务和mysql事务_sqlServer数据库事务处理

事务定义:

事务是单个的工作单元。如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中的永久组成部分。如果事务遇到错误且必须取消或回滚,则所有数据更改均被清除。

事务三种运行模式:自动提交事务每条单独的语句都是一个事务。显式事务每个事务均以BEGIN

TRANSACTION语句显式开始,以COMMIT或ROLLBACK语句显式结束。隐性事务在前一个事务完成时新事务隐式启动,但每个事务仍以COMMIT或ROLLBACK语句显式完成。

事务操作的语法:

BEGIN TRANSACTION

BEGIN DISTRIBUTED TRANSACTION

COMMIT TRANSACTION

COMMIT WORK

ROLLBACK WORK

SAVE TRANSACTION

BEGIN TRANSACTION

BEGIN

TRANSACTION标记一个显式本地事务的起始点。BEGIN

TRANSACTION将@@TRANCOUNT加1。

BEGIN

TRANSACTION代表一点,由连接引用的数据在该点是逻辑和物理上都一致的。如果遇上错误,在BEGIN

TRANSACTION之后的所有数据改动都能进行回滚,以将数据返回到已知的一致状态。每个事务继续执行直到它无误地完成并且用COMMIT

TRANSACTION对数据库作永久的改动,或者遇上错误并且用ROLLBACK

TRANSACTION语句擦除所有改动

语法

BEGIN TRAN [ SACTION ] [ transaction_name |

@tran_name_variable [ WITH MARK['description' ] ] ]

例子:BEGIN TRAN T1

UPDATE table1 ...--nest transaction M2

BEGIN TRAN M2 WITH MARK

UPDATE table2 ...

SELECT * from table1

COMMIT TRAN M2

UPDATE table3 ...

COMMIT TRAN T1

BEGIN DISTRIBUTED

TRANSACTION指定一个由Microsoft分布式事务处理协调器(MS

DTC)管理的Transact-SQL分布式事务的起始。

语法BEGIN DISTRIBUTED TRAN [ SACTION ][ transaction_name |

@tran_name_variable ]

参数transaction_name是用户定义的事务名,用于跟踪MS

DTC实用工具中的分布式事务。transaction_name必须符合标识符规则,但是仅使用头32个字符

@tran_name_variable是用户定义的一个变量名,它含有一个事务名,该事务名用于跟踪MS

DTC实用工具中的分布式事务。必须用char、varchar、nchar或nvarchar数据类型声明该变量。

注释执行BEGIN

DISTRIBUTED

TRANSACTION语句的服务器是事务创建人,并且控制事务的完成当连接发出后续COMMIT

TRANSACTION或ROLLBACK

TRANSACTION语句时,主控服务器请求MS

DTC在所涉及的服务器间管理分布式事务的完成。有两个方法可将远程SQL服务器登记在一个分布式事务中:

分布式事务中已登记的连接执行一个远程存储过程调用,该调用引用一个远程服务器。分布式事务中已登记的连接执行一个分布式查询,该查询引用一个远程服务器。

示例本例在本地和远程数据库上更新作者的姓。本地和远程数据库将同时提交或同时回滚本事务。

说明当前的SQL

Server上必须安装MS

DTC.

USE pubs

GO

BEGIN DISTRIBUTED TRANSACTION

UPDATE authors

SET au_lname = 'McDonald' WHERE au_id = '409-56-7008'

EXECUTElink_Server_T.pubs.dbo.changeauth_lname

'409-56-7008','McDonald'

COMMIT TRAN

GO

Note:如果需要连接远程DB,如果是linkServer方式连接的话,一定要修该linkServer

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值