我已经运行这个SQL,为什么我的完整表被锁定而不是行?
create table temp
(
id int,
name varchar(10)
)
insert into temp values(1,'a');
然后我跑,
select 1 from temp where id = 1
样样精。
然后我运行一个未提交的插入,
SET NOCOUNT ON;
DECLARE @TranCount INT;
SET @TranCount = @@TRANCOUNT;
IF @TranCount = 0
BEGIN TRANSACTION
ELSE
SAVE TRANSACTION Insertorupdatedevicecatalog;
insert into temp values(2,'b')
然后我跑,
select 1 from temp where id = 1
而是返回这个时候什么都没有。为什么我的完整表被锁定而不是第二行?
表是一堆(像通常一样没有唯一的CI)的事实在这里导致意外的锁定。通过在ID上创建唯一的CI,此问题将消失。 – usr
我在本地系统上运行了代码,但无法重现它。如预期的那样,第二个“SELECT”返回1。 – SchmitzIT
@SchmitzIT,我正在测试这个新的数据库,新的安装和一个全新的表 – user960567