【发布时间】:2016-06-05 03:46:12
【问题描述】:
在我的transaction 中添加explicit commit 与自动提交有什么区别。
CREATE TABLE #test (test_col INT)
显式提交
INSERT #test
VALUES (11)
BEGIN TRY
BEGIN TRAN DELETE_TRAN
DELETE FROM #test
COMMIT TRAN DELETE_TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN DELETE_TRAN
SELECT ERRORMESSAGE = Error_message()
END CATCH
SELECT *
FROM #test
没有明确的 COMMIT
INSERT #test
VALUES (11)
BEGIN TRY
BEGIN TRAN DELETE_TRAN
DELETE FROM #test
END TRY
BEGIN CATCH
ROLLBACK TRAN DELETE_TRAN
SELECT ERRORMESSAGE = Error_message()
END CATCH
SELECT *
FROM #test
这里两者都做同样的事情。谁能说出一个比另一个有什么区别或优势。
【问题讨论】:
-
好问题。这可能更适合Stack DBA。
-
@destination-data - 我是否必须在上述网站上发布同样的问题?
-
不,我被告知这样做了!显然这是一种糟糕的形式。如果您愿意,可以将问题标记为离题 - 错误的站点。然后模组会移动它。
-
@destination-data 标记成功
标签: sql sql-server transactions commit rollback