Iam*_*mIC 4 sql-server scope stored-procedures locking transactions
在 SQL Server 2008 中,我知道没有嵌套事务这样的东西。这些似乎只是存在。我也知道一些专家强烈恳求开发人员不要使用可用的伪嵌套事务。例如,这里。
但是,我有一个案例,我需要在特定嵌套过程中的一行上使用 XLOCK,但仅限于该过程的持续时间。它必须是那个锁,我显然想尽快放下锁。在伪代码中:
...outer procedure
BEGIN TRAN Inner
EXEC InnerProcedure
...InnerProcedure...
BEGIN TRAN Inner
SELECT ... WITH (XLOCK, ROWLOCK)
COMMIT TRAN Inner
-- NEVER rollback here; get the outer procedure to do this
...End InnerProcedure...
COMMIT TRAN Outer
Run Code Online (Sandbox Code Playgroud)
我的问题是:
不。不要使用“嵌套”事务(即使在 TSQL 中)。充其量,它们不会像您想象的那样工作:每天一个 SQL Server DBA 神话:(26/30) 嵌套事务是真实的 (False)
XLOCK 将在外部事务范围内释放。[更新:包括雷木思的建议]
归档时间: |
|
查看次数: |
1711 次 |
最近记录: |