Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-05-2006
pelaorb68 pelaorb68 is offline
Miembro
 
Registrado: oct 2005
Posts: 32
Poder: 0
pelaorb68 Va por buen camino
Bloqueo de Registros

Hola a todos, necesito si me pueden ayudar por favor......

Estoy realizando una aplicación (D7-MySql) y necesito controlar la concurrencia de usuarios. Estoy un poco consfuso con el ConnectionMode y el LockType.......(No sé si es el camino correcto).

Tengo una situación que no sé cómo controlarla(bloqueos):

Ejm:

Estoy ingrseando información del tipo Maestro/Detalle.....Cuando la voy actualizar, primero que todo leo el último folio registrado en la tabla Maestro, para asignar el siguiente+1 al nuevo registro a crear.

El punto es, qué pasa cuando dos o mas usuarios(al intentar grabar), lean al mismo tiempo, el último registro Maestro????...ámbos tendran un Ultimo+1 idéntico.

Cómo puedo hacer que el primero que leea el ultimo registro Maestro, deje tomado ese registro hasta que complete el resto de las actualizaciones..????

Saludos,
Responder Con Cita
  #2  
Antiguo 10-05-2006
Avatar de waltergomez
waltergomez waltergomez is offline
Miembro
 
Registrado: may 2006
Posts: 202
Poder: 19
waltergomez Va por buen camino
Y al final descubrimos las transacciones !!!

Todo pasa por el Isolation Level que uses.

Lee esto,

http://www.databasejournal.com/featu...le.php/3393161

Saludos,
Responder Con Cita
  #3  
Antiguo 10-05-2006
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Checa Esto....

Yo te recomiendo aparte de usar Transacciones, crear una tabla donde contiene los consecutivos de tus Maestros Detalles, y al momento de Guardar el Maestro Detalle tomas el ultimo folio en la tabla de consecutivos y al mismo tiempo bloqueas el registro cuando en esta tabla le aumentes 1 Dígito(Con un Update ....) al Folio de tu maestro....

Espero te sirva...

Saludos.
Responder Con Cita
  #4  
Antiguo 10-05-2006
pelaorb68 pelaorb68 is offline
Miembro
 
Registrado: oct 2005
Posts: 32
Poder: 0
pelaorb68 Va por buen camino
waltergomez.....he estado leyendo lo de los Isolation Level, y creo que ello habla de cuándo estarán visible los cambios hechos por otra transacción (estoy en lo correcto??)....
En lo que pretendo, al leer el último registro Maestro no haré nada con él, sólo saber su folio para asignar a los nuevos registros a crear, ese folio + 1.

También leí lo del LockType y si mal no entendí (mi inglés no es de lo mejor) es que al utilizar un ltPessimistic, el registro es bloqueado cuando se realiza una operación Edit....(eso es correcto..???).........Hize una preuab de ese tipo, pero cuando el segundo usuario toma el mismo registro(que ya está en edit) no sucede nada, es decir, lee el mismo folio....


AGAG4 : Gracias por tu respuesta, pero por el momento no es aplicable para mi app, ya que la determinación del último folio a ocupar puede estar dado por una condición, es decir, nó necesariamente es el último registro en la tabla Maestro, sino que podría ser el último folio ingresado según el valor de otro campo más....no sé si me explico......
Responder Con Cita
  #5  
Antiguo 10-05-2006
Avatar de waltergomez
waltergomez waltergomez is offline
Miembro
 
Registrado: may 2006
Posts: 202
Poder: 19
waltergomez Va por buen camino
Cuando tenga un tiempito te mando un ejemplo, pero proba
abriendo dos ventanas y ejecuta mysql en linea de comando y proba en forma simplificada lo que queres hacer asi te das cuenta como funciona.

Para poder hacer lo que queres debes tener autocommit = 0 y usar base de datos de tipo InnoDB.

Tenes que hacer las operaciones (select, insert, update) dentro de un bloque start transaction / commit.

Disculpa que no pueda dedicarte mas tiempo.

Saludos,
Responder Con Cita
  #6  
Antiguo 11-05-2006
pelaorb68 pelaorb68 is offline
Miembro
 
Registrado: oct 2005
Posts: 32
Poder: 0
pelaorb68 Va por buen camino
Gracias por tu tiempo waltergomez.........espero me puedas enviar un ejemplo......
De hecho, todas las operaciones que pretendo realizar en la actualización van dentro de una Transacción.......
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Bloqueo De Registros pepeus SQL 2 01-02-2006 18:04:12
Bloqueo de registros Duc SQL 1 08-07-2005 17:25:13
Bloqueo de Registros Lix Oracle 1 02-03-2004 07:18:56
bloqueo de registros barrene Conexión con bases de datos 1 29-07-2003 11:36:14
Bloqueo de registros en DB2 mpedra DB2 5 01-07-2003 22:10:48


La franja horaria es GMT +2. Ahora son las 19:35:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi