gpt4 book ai didi

SQL Server BEGIN/END 与 BEGIN TRANS/COMMIT/ROLLBACK

转载 作者:行者123 更新时间:2023-12-02 00:43:28 31 4
gpt4 key购买 nike

我一直在尝试在网络上查找有关这些陈述之间差异的信息,在我看来它们是相同的,但我找不到对此的确认或两者之间的任何类型的比较。

这样做有什么区别:

BEGIN
-- Some update, insert, set statements
END

并且这样做

BEGIN TRANS
-- Some update, insert, set statements
COMMIT TRANS

请注意,只有在出现异常或超时或其他一般故障的情况下才需要回滚,不会有条件回滚。

最佳答案

BEGIN 和 END 处理代码块。它们类似于您在许多语言中看到的花括号:

if (somethingIsTrue)
{ // like BEGIN
// do something here
} // like END

在 SQL 中,这是:

if somethingIsTrue
BEGIN
-- do something here
END

BEGIN TRANCOMMITROLLBACK 开始和结束事务。他们没有指定新的代码块;它们仅标记事务边界。

请注意,您可以在单独的代码块中编写 BEGIN TRANCOMMIT。例如,如果您希望代码成为事务的一部分,但如果代码已在事务中,则不想启动新事务,则可以执行以下操作:

declare @TranStarted bit = 0
if @@trancount = 0
begin
set @TranStarted = 1
begin tran
end

-- ... do work ...

if @TranStarted = 1
begin
commit
set @TranStarted = 0
end

关于SQL Server BEGIN/END 与 BEGIN TRANS/COMMIT/ROLLBACK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2730341/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com