Hola, tengo una duda respecto a las transacciones de sql server.
BEGIN TRANSACTION
DECLARE @NUMERO INT,@SUMAR INT
SET @SUMAR' // este numero cambia en cada llamada
SELECT @NUMERO=MAX(NUMERO)+@SUMAR FROM TABLANUMEROS
SELECT .. un select que tarde unas veces mas y
otras menos dependiendo de los paramatetros.
INSERT TABLANUMEROS @NUMERO y el resultado del select anterior
COMMIT TRANSACCION
durante este proceso puede ser que otro usuario llame al mismo procedimiento
con el @SUMAR', si el procedimiento primero no ha terminado todavia, es
decir todavia no ha iniciado la insercion en TABLANUMEROS, y los calculos
intermedios de la segunda llamada se terminan antes que la primera llamada
con lo cual se insertan antes,sql server intentara insertar un @NUMERO que
ya esta en la tabla procedente de la segunda llamada, con lo que fallara y
dara un error de duplicacion de clave.
Esto es asi o estoy equivocado?.
Saludos.
Leer las respuestas