Saklı bir yordamda eklerim ile eşzamanlılık sorunları yaşıyorum. Prosedürün ilgili kısmı şudur:
select @_id = Id from table1 where othervalue = @_othervalue
IF( @_id IS NULL)
BEGIN
insert into table1 (othervalue) values (@_othervalue)
select @_id = Id from table1 where othervalue = @_othervalue
END
Bu depolanan proc'ların 3 veya 4'ünü eşzamanlı olarak çalıştırdığımızda bazen birden fazla kesici uç alırız.
Ben böyle sabitleme planlıyorum:
insert into table1 (othervalue)
select TOP(1) @_othervalue as othervalue from table1 WITH(UPDLOCK)
where NOT EXISTS ( select * from table1 where othervalue = @_othervalue )
select @_id = Id from table1 where othervalue = @_othervalue
Soru şu ki, sql sunucusunda kopya olmadan eşzamanlı olarak nasıl eklenir? Sadece bir kez eklemek için TOP kullanmak zorunda olduğum gerçeği beni rahatsız ediyor.