1 -- 一、什么是数据过渡? 2 -- 在系统上线时,有时候需要对历史已有的数据做过渡处理 3 4 -- 二、数据过渡几个需要注意的点: 5 -- 1、尽量套个事务,执行失败之后回滚事务 6 -- 2、尽量做到该数据过渡可以重复执行,而不会有“后遗症” 7 -- 3、在执行 UPDATE、DELETE 等之类的语句时,如果对预期影响的行数明确的话,尽量在语句执行后加个 "IF @@ROWCOUNT <> 预期影响行数" 之类的判断 8 -- 4、在数据过渡关键节点的地方输出日志 9 -- 5、不要把错误信息吞了 10 11 -- 三、示例: 12 USE agent_config 13 GO 14 15 -- ① 在外围套个 TRY CATCH 以及事务 16 BEGIN TRY 17 BEGIN TRAN; 18 19 -- ② 该过渡执行多次不会产生副作用 20 UPDATE agent_config.dbo.mt_post_tbl 21 SET positionName = '过度数据' 22 WHERE positionName = '过度条件'; 23 24 -- ③ 因为明确目标预期更新的记录行只有 1 行,所以这里加个“IF @@ROWCOUNT <> 1”的判断,确保数据过渡的准确性 25 IF @@ROWCOUNT <> 1 26 BEGIN 27 -- ④ 在关键节点进行输出日志,输出日志的内容要方便 CTRL + F 定位查找,并表明日志的严重性 info、success、warn、error 28 PRINT '>> warn:过渡职位名称“过度数据”→“过度条件”失败'; 29 ROLLBACK TRAN; 30 RETURN; 31 END; 32 33 COMMIT TRAN; 34 PRINT CASE WHEN @@TRANCOUNT = 0 THEN '>> success' 35 ELSE '>> error:@@TRANCOUNT is ' + CAST(@@TRANCOUNT AS VARCHAR(50)) 36 END; 37 END TRY 38 BEGIN CATCH 39 -- ① 捕获错误时回滚事务 40 -- ⑤ 打印错误信息 41 ROLLBACK TRAN; 42 PRINT '>> error:' + ERROR_MESSAGE(); 43 END CATCH;