【问题标题】:Is it good idea to batch multiple merge in a stored procedure在存储过程中批量合并多个合并是个好主意
【发布时间】:2013-08-01 05:25:25
【问题描述】:

我正在尝试编写一个存储过程,我在不同的表上执行多个插入/更新/删除。

所以我的 SP 看起来像这样。这是正确的做法吗?

Begin
  Merge 1
End
Begin
  Merge 2
End 
Begin
  Merge 3
End

或者我应该像这样跟随

Begin
  Merge 1
  Merge 2
  Merge 3
End

救命!!

【问题讨论】:

  • 您的 BEGIN/END 段不会真正创建多个批次,因此这两个选项之间确实没有区别。您是说 BEGIN TRANSACTION / COMMIT TRANSACTION 吗?
  • 感谢您的建议。我知道如果我将 BEGIN TRAN/COMMIT TRAN 作为一个批次使用,这将创建单独的批次。问这个问题的原因是想看看sql server是怎么处理的。
  • 不,它仍然不是一个单独的批次,它是一个单独的事务。 BEGIN/END 只是代码块,与批处理无关。

标签: sql-server stored-procedures merge


【解决方案1】:

你应该有它如下:

Begin
  Merge 1
  Merge 2
  Merge 3
End

请参阅上面@AaronBertrand 的 cmets 以获得进一步说明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 2016-12-10
    • 2010-12-28
    • 2015-05-29
    • 2018-11-18
    相关资源
    最近更新 更多