Oks, Mira en SQl server las transacciones las puedes manejar desde el mismo motor de base de datos haciendo uso de procedimientos almacenados, de esa manera los bloqueos evitan que las acciones concurrentes generen resultados imprevistos.
Aca un scrip que modifiqué en el siguiente
post
Código SQL
[-]
CREATE
PROCEDURE spDebitarCheque
(
@IdCheque int, --Define el Id del Cheque
@FechaDebito Char(10) --Define la fecha de débito del cheque (formato 120)
)
AS
Declare
@VDtFecDebito As DateTime --Almacena en formato DateTime la fecha del débito
--Con esto aseguras que sin importar la configuración de sql server
-- o del cliente el valor de fecha será traducido de manera satisfactoria
Set @VDtFecDebito = Convert(DateTime,@FechaDebito,120)
--Se inicia la transacción
Begin tran
UPDATE Cheque.dbo.Cheques
SET FechaDebito = @VDtFecDebito
WHERE IdCheque =@IdCheque
If @@ERROR <> 0
Begin
Rollback Tran
GoTo ErrorHandler
End
Commit Tran
Return
ErrorHandler:
--Tratamiento del error