que tienen un procedimiento como este:Thread transaction sql safe, cómo bloquear una fila específica durante una transacción?
create procedure Checkout
@Foo nvarchar(20),
@cost float
as
begin transaction
declare @Bar nvarchar(20);
select @Bar = Bar from oFoo where Foo = @Foo;
update Foo set gold = gold - @cost where name = @Foo;
update Bar set gold = gold + @cost where name = @Bar;
delete from oFoo where @Foo = Foo;
commit transaction
necesito para bloquear la fila con Foo = @foo de la mesa oFoo durante esta operación para que nadie pudiera leer/editar/borrar, nadie sabe cómo hacerlo ?
estoy usando Microsoft SQL Server 2008
creo que simplemente seleccionando una fila por lo general lo bloquea para el alcance de transacción a menos que haya reconfigurado el DB. ¿Trata eso? ¿Alguien mas? – martinr
@martinr: SELECT colocará un bloqueo compartido, p. los datos aún se pueden modificar entre SELECT y la primera ACTUALIZACIÓN. – liggett78
Necesita decirnos qué base de datos está utilizando, puede haber métodos específicos según la base de datos. –