![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
¿Con qué servidor de sql de bases de datos: MySql, PostgreSql, Firebird, Microsoft Sql, Oracle, Sqlite, etc. ?
¿Y para qué quieres bloquear registros?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#2
|
||||
|
||||
|
Cita:
Necesito hacerlo para que un usuario1 no edite un registro que está siendo editado por otro usuario2 sino que al saber esto pueda enviarle un mensaje que esta siendo usado el registro. |
|
#3
|
||||
|
||||
|
¿Eso es microsoft, no?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#4
|
||||
|
||||
|
Si exacto. Y trabajo desde delphi con firedac.
|
|
#5
|
||||
|
||||
|
¿Y para qué quieres hacer explícitamente algo que el motor de bases de datos hace implícitamente? No necesitas "bloquearlo" por que los datos necesarios están en tu cliente y solamente deberías regresar los que cambiaron mediante un UPDATE...
MS SQLServer no es dBase o Paradox, los datos no están "vivos" en tu pantalla.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively... "Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum. Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco |
|
#6
|
|||
|
|||
|
Supongo que el proceso de edición de ese registro es algo demorado y con alta posibilidad de concurrencia, por eso el deseo de que otros usuarios no puedan editar el mismo registro simultáneamente. Aunque podemos delegar esta responsabilidad a la base de datos, que sabe hacerlo de forma natural, lo cierto es que solo al final, quizás después de haber editado un extenso formulario, obtendremos la excepción indicando que el registro está siendo utilizado por otro usuario, o peor aún, sobreescribiendo la información que otro usuario acaba de actualizar sin que nadie se entere.
Propongo la siguiente solución: - Adicionar columnas a la tabla a editar que contengan: Estado de edición de registro (Editandose/Disponible), Usuario que está editando el registro y fecha-hora de inicio de la edición. - a la consulta de selección se le añade el criterio para que solo lea los registros en estado Disponible. - Cuando se empieza el proceso de Edición, se actualizan las nuevas columnas para indicar que ese registro se está "editando". La sentencia de actualización sería algo como
Si la Anterior sentencia de actualización actualiza cero filas entonces ese registro está siendo editado y se eleva la correspondiente excepción. Personalmente esto lo haría en un procedimiento almacenado. - Finalmente cuando se actualiza realmente el registro con los nuevos datos se coloca la columna de EstadoRegistro en estado Disponible. Otra posible solución sería crear una nueva tabla (tabla de registros en edición o de bloqueos) en donde se registre el nombre de la tabla, el ID de registro que se está editando y demás datos de auditoría. al finalizar el proceso se eliminaría el registro o se colocaría en un estado de terminado. Última edición por orodriguezca fecha: 05-01-2016 a las 19:56:11. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Borrado de registro | perillan | Conexión con bases de datos | 5 | 19-01-2006 20:10:37 |
| ¿Borrado masimo o registro a registro? | CHiCoLiTa | SQL | 0 | 21-03-2005 16:14:39 |
| No refresca registro borrado | noe | Firebird e Interbase | 2 | 04-01-2005 19:58:06 |
| Borrado de un registro | Dante666 | SQL | 1 | 02-11-2004 12:23:56 |
| Borrado de un registro con IBX en Delphi 8 | murci | Conexión con bases de datos | 4 | 06-02-2004 18:25:14 |
|