varios usuarios intentan dar de alta un mismo registro

eis
09 de Diciembre del 2005
¿Como puedo controlar que no me de error cuando dos usuarios intentan introducir un mismo registro en una misma tabla?. Los registros tienen una clave unica que es el codigo y las sentencia de insert se hacen a partir de codigo de vb .net.

monky
09 de Diciembre del 2005
Para trabajar con este tipo de operaciones debes usar el tratamiento de transacciones; en donde, en cada transaccion puedas manejar mediante programacionn este tipo de situaciones.

Lo mas sano es usar procedimientos almacenados en donde indiques algo asi

BEGIN TRAN
Haces el select para seleccionar el codigo + 1 (si es que tu clave no es identity; si es identity solo haces el select de cualquier columna) con la opcion HOLDLOCK (esto se hace para mentener bloqueada la tabla mientras usas la transaccion)
Luego insertas la fila
si la operacion esta OK
COMMIT TRAN
sino
ROLLBACK TRAN
END

Al final el sistema solo desbloqueará la tabla y te da la seguridad que no se ingresaran los mismos registros en tu tabla

pablo
09 de Diciembre del 2005
la insersion de dos registros iguales la cuida el propio sqlserver (bah, cualquier motor de bd que se precie de serlo), si has usado tablas con clave primaria. (que es lo correcto al crear una tabla)
el propio motor no permite la insersion de dos registros con la misma clave primaria (por ejemplo, el numero de legajo de un alumno, que es unico)

al intentar insertar un registro duplicado el una tabla, el motor te va a tirar un error de registro no insertado por restrccion de clave primaria duplicada (identidad), lo que tenes que hacer, es controlar ese error en tu programa

nos vemos!