加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 16:18:05 所属栏目:MsSql教程 来源:网络整理
导读:我一直试图在网络上找到关于这些语句之间的差异的信息,在我看来,它们是一样的,但是我找不到这两者之间的任何比较的确认. 这样做有什么区别? BEGIN -- Some update,insert,set statementsEND 并做到这一点 BEGIN TRANS -- Some update,set statementsCOMMIT T
我一直试图在网络上找到关于这些语句之间的差异的信息,在我看来,它们是一样的,但是我找不到这两者之间的任何比较的确认.

这样做有什么区别?

BEGIN
    -- Some update,insert,set statements
END

并做到这一点

BEGIN TRANS
    -- Some update,set statements
COMMIT TRANS

请注意,在某些异常或超时或其他一般故障的情况下,只需要回滚,则不会有条件的回滚原因.

解决方法

BEGIN和END处理代码块.它们与您在许多语言中看到的大括号相似:
if (somethingIsTrue)
{ // like BEGIN
    // do something here
} // like END

在SQL中,这是:

if somethingIsTrue
BEGIN
    -- do something here
END

BEGIN TRAN,COMMIT和ROLLBACK开始和结束交易.他们没有指定新的代码块;它们只标记交易边界.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读