Pez*_*ola 3 sql-server transaction sql-server-2014
所以我在 SQL2014 中创建了一个存储过程。开始时它有:开始交易
然后它插入一个表,它有一个自动递增的主键:插入到 tNotice。
然后在存储过程中,我需要针对 tNotice 表编写一个查询,以用于将另一个插入语句构建到不同的表中。我的问题是,是否会选择新插入的值,因为这将在事务中进行,并且直到存储过程结束才会提交?
你可以做一个快速测试来确认这一点,我只是出于好奇进行了一个测试,这是在 sql server 2012 上。当前会话将可以看到以前插入但未提交的记录,但是其他会话将不可见取决于他们的事务隔离级别。
例子
create table hs_test(
id int
)
begin transaction
insert into hs_test values (1)
select * from hs_test
--commit
Run Code Online (Sandbox Code Playgroud)
我在一个 ssms 窗口中运行它,默认隔离级别为 ReadCommitted。不提交,选择仍然会看到插入的 1 的值。
现在,如果您打开另一个 ssms 窗口,并尝试查询该表,您将看不到任何记录,因为它尚未提交。
| 归档时间: |
|
| 查看次数: |
2094 次 |
| 最近记录: |