gpt4 book ai didi

stored-procedures - SQL Server的存储过程的隔离级别?

转载 作者:行者123 更新时间:2023-12-04 15:08:07 25 4
gpt4 key购买 nike

我想在我的过程中添加隔离级别,为此,我想从下面确认哪种格式是正确的:

尝试#1-在调用存储过程之前设置隔离级别:

SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

EXEC [sp_GetProductDetails] 'ABCD','2017-02-20T11:51:37.3178768'

尝试#2-在存储过程中设置隔离级别:
CREATE PROCEDURE MySP AS
BEGIN
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
BEGIN TRAN
SELECT * FROM MyTable
SELECT * FROM MyTable2
SELECT * FROM MyTable3

COMMIT TRAN
END

请提出建议。

最佳答案

两种版本都是“正确的”-它们只是执行不同的事情:

  • 您的尝试1为该数据库和连接设置了隔离级别-这意味着,所选的隔离级别将用于将来的任何语句-直到您再次更改隔离级别为止
  • 您的尝试#2仅将隔离级别设置在存储过程内-因此,一旦存储过程完成,将再次恢复数据库/连接级别上存在的隔离级别

  • 因此,这实际上取决于您要执行的操作:
  • 是否将隔离级别设置为与(通常是)不同的级别(对于您当前与此数据库的连接)?任何将来的语句都将在此隔离级别下运行->选择#1
  • 仅针对单个存储过程将隔离级别设置为不同的设置-不管连接/数据库之前的状态如何-然后使用#2
  • 关于stored-procedures - SQL Server的存储过程的隔离级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42360215/

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