Bos*_*oss 6 stored-procedures isolation-level sql-server-2012
我想在我的程序中添加隔离级别,为此我想从下面确认哪一个是正确的格式:
尝试#1 - 在调用存储过程之前设置隔离级别:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
EXEC [sp_GetProductDetails] 'ABCD','2017-02-20T11:51:37.3178768'
Run Code Online (Sandbox Code Playgroud)
尝试#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
Run Code Online (Sandbox Code Playgroud)
请建议.
两种版本都是“正确的”-它们只是做不同的事情:
尝试#1设置该数据库和连接的隔离级别-这意味着所选的隔离级别将用于将来的任何语句-直到再次更改隔离级别
您的尝试2 仅将隔离级别设置在存储过程内部 -因此,一旦存储过程完成,数据库/连接级别上存在的隔离级别将再次恢复
因此,这实际上取决于您要执行的操作:
设置隔离级别等级不同,一般为当前连接到这个数据库?任何将来的语句都将在此隔离级别下运行->选择#1
仅针对单个存储过程将隔离级别设置为不同的设置-不管连接/数据库之前的内容如何-然后使用#2
归档时间: |
|
查看次数: |
4507 次 |
最近记录: |