同一个连接的数据库,里面的所有数据库实例之间都支持事务

sqlserver的事务sql

 1 ---开启事务
 2 begin tran
 3 --错误扑捉机制,看好啦,这里也有的。并且可以嵌套。
 4 begin try  
 5    --语句正确
 6    UPDATE [jichu].[cheliang].[pinpai] SET img = '../kkkkkkkkk.jpg' WHERE id = '5'
 7    --出错
 8    UPDATE [jichu].[zulin].[heimingdan] SET idnum = '130123198908152kkk' WHERE id = '1'
 9      -- 另一个库里的表
10      UPDATE [bz].[cheliang].[chelianginfo] SET vinn = 'kkkkkkkkkkkkkkkkkk' WHERE chepaihao = '苏BZ2222'
11 end try
12 begin catch
13    select Error_number() as ErrorNumber,  --错误代码
14           Error_severity() as ErrorSeverity,  --错误严重级别,级别小于10 try catch 捕获不到
15           Error_state() as ErrorState ,  --错误状态码
16           Error_Procedure() as ErrorProcedure , --出现错误的存储过程或触发器的名称。
17           Error_line() as ErrorLine,  --发生错误的行号
18           Error_message() as ErrorMessage  --错误的具体信息
19    if(@@trancount>0) --全局变量@@trancount,事务开启此值+1,他用来判断是有开启事务
20       rollback tran  ---由于出错,这里回滚到开始,第一条语句也没有插入成功。
21 end catch
22 if(@@trancount>0)
23 commit tran  -- 提交事务
24 
25 -- 查询验证
26 select * from [jichu].[cheliang].[pinpai] WHERE id = '5';
27 select * from [jichu].[zulin].[heimingdan] WHERE id = '1';
28 SELECT * from bz.cheliang.chelianginfo where chepaihao = '苏BZ2222';

mysql的事务sql

1 BEGIN;
2 UPDATE tieasygps.log set operate_desc = 'ffffffffff' WHERE id = '1';
3 UPDATE tieasygps.yys set ms = 'fffffffffff' WHERE id = '2';
4 UPDATE test.pp set ms = 'ffffffffffffff' WHERE id = '3';
5 COMMIT;

只要有一个出错,都会回滚。

原文地址:https://www.cnblogs.com/shamo89/p/7299036.html