Bloqueo de registros

15/07/2005 - 09:22 por Tecnicos Aydai | Informe spam
Hola buenas!!!

Queria saber si existe alguna opcion para bloquear un registro, y
desbloquearlo cuando yo lo crea necesario (con el fin de que no se pueda
modificar el mismo registro desde dos pantallas a la misma vez). Un saludo y
gracias.

Preguntas similare

Leer las respuestas

#1 Tristan
15/07/2005 - 10:42 | Informe spam
Ado.net no permite por si mismo bloqueo pesimista. Si lo necesitas, tendrás
que hacerlo a nivel de procedimiento almacenado, o utilizar ADO.

Lo que si permite ado.net es llevar un control de concurrencia optimista. Se
intenta actualizar la fila, si la fila ha sido modificada por otro proceso,
se impide la operación y se genera una excepción. Normalmente suele ser
suficiente, y consume muchos menos recursos del SGBD que el bloqueo
pesimista.

Para utilizar bloqueo optimista, basta con que los comandos de actualización
incluyan un where con los valores de fila originales. Se genera una excepción
DBConcurrencyException cuando un Delete, Update o Insert no afecta a ninguna
fila.

Lo más sencillo es que utilices el asistente para crear un dataadapter. Los
comandos generados te servirían como modelo.

Juan Carlos Badiola Saiz
MVP - C#
Respuesta Responder a este mensaje
#2 Tecnicos Aydai
15/07/2005 - 12:06 | Informe spam
Muchas gracias por tu respuesta tristan, pero no comprendo muy bien a que te
refieres con que el where incluya los valores de fila originales, te
refieres a que me los guarde en varialbles al recuperarlos, y luego cuando
los vaya a modificar le ponga estos en el where???

Un saludo y gracias por la respuesta.
"Tristan" escribió en el mensaje
news:
Ado.net no permite por si mismo bloqueo pesimista. Si lo necesitas,
tendrás
que hacerlo a nivel de procedimiento almacenado, o utilizar ADO.

Lo que si permite ado.net es llevar un control de concurrencia optimista.
Se
intenta actualizar la fila, si la fila ha sido modificada por otro
proceso,
se impide la operación y se genera una excepción. Normalmente suele ser
suficiente, y consume muchos menos recursos del SGBD que el bloqueo
pesimista.

Para utilizar bloqueo optimista, basta con que los comandos de
actualización
incluyan un where con los valores de fila originales. Se genera una
excepción
DBConcurrencyException cuando un Delete, Update o Insert no afecta a
ninguna
fila.

Lo más sencillo es que utilices el asistente para crear un dataadapter.
Los
comandos generados te servirían como modelo.

Juan Carlos Badiola Saiz
MVP - C#
Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
15/07/2005 - 15:58 | Informe spam
Muchas gracias por tu respuesta tristan, pero no comprendo muy bien a
que te refieres con que el where incluya los valores de fila
originales, te refieres a que me los guarde en varialbles al
recuperarlos, y luego cuando los vaya a modificar le ponga estos en
el where???



Es lo que te he dicho que hicieras en el otro mensaje. Esto es exactamente
lo que hacen en combinacion un DataTable y un DataAdapter. El DataTable
mantiene tanto la version original de la fila como los nuevos valores y el
DataAdapter (con los comandos generados por el asistente) utiliza los
valores originales en el WHERE del comando UPDATE.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida