Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-05-2013
shoulder shoulder is offline
Miembro
 
Registrado: abr 2008
Posts: 441
Poder: 17
shoulder Va por buen camino
Problema Bloqueo de tabla

Hola tengo un problema, quiero bloquear una tabla en modo lectura, para tomar el ultimo numero, sumarle 1 y grabar el siguiente numero, son partes medicos por empleado y vuelve a uno cuando cambia el año, pero no me funciona el "for update" no hace nada puedo seguir leyendo, no me bloquea para que otro no pueda leer. Version Mysql 5.5.28 Innodb

Ejemplo 1
Cita:
set autocommit = 0;
select parte from ficha where anio = :anio order by parte desc limit 1 for update;
Insert into ficha (....)
commit;
El ejemplo 2, me bloquea la tabla y no me deja seguir (se me bloquea en el select),lo que quiero que ese usuario tome la tabla y los demas queden a la espera.

Cita:
set autocommit = 0;
lock tables ficha read
select parte from ficha where anio = :anio order by parte desc limit 1 ;
Insert into ficha (....)
commit;

Gracias.
Responder Con Cita
  #2  
Antiguo 03-05-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Ni idea de bloquear tablas en mysql, ni creo que sea necesario, pero a lo que voy, para obtener el mayor número no hace falta hacer eso, basta con algo así como:
Código SQL [-]
select max(parte) from ficha where ...
Responder Con Cita
  #3  
Antiguo 03-05-2013
shoulder shoulder is offline
Miembro
 
Registrado: abr 2008
Posts: 441
Poder: 17
shoulder Va por buen camino
Hola Gracias primero por responder, me sucedio que dos usuarios consultaron en el mismo segundo y a los dos les dio el mismo numero, busque en internet y hay que bloquear las tablas por medio de START Transaction, pero no me funciona.
Responder Con Cita
  #4  
Antiguo 03-05-2013
shoulder shoulder is offline
Miembro
 
Registrado: abr 2008
Posts: 441
Poder: 17
shoulder Va por buen camino
ya lo arregle asi, en unit agregue ZDbcIntfs


Cita:
form1.ZConnection1.TransactIsolationLevel := tiReadCommitted;
form1.ZConnection1.StartTransaction;

zquery2.add( Select....
zquery2.add(Insert..)
form1.ZConnection1.Commit;
;


Starttransaction solo funcione en Innodb, y bloquea las tablas hasta encontrar el primer commit, con eso me amparo que no entre un usuario y tome el mismo numero. Nunca me habia sucedido hasta ayer cuando vi que dos personas tenian el mismo parte medico (no lo puedo prefijar por autoincrement porque al cambiar el año vuelve a 1 y los partes se renuevan con el mismo numero dentro de la misma enfermedad). Cuando me fije habian entrado dos secretarias a las 09:11:24 segundos....
Responder Con Cita
  #5  
Antiguo 13-05-2013
marinaAv marinaAv is offline
Miembro
NULL
 
Registrado: ago 2011
Posts: 15
Poder: 0
marinaAv Va por buen camino
hola bueno a mi me paso una ves eso y lo que hic fue que el proceso se hiciera dos veces sin guardar la primera solo para verificar que otra persona no hubiera tomado el mismo folio ( en mi caso eran facturas) y asi me funciono bien y ya no me paso de nuevo
Responder Con Cita
  #6  
Antiguo 15-05-2013
shoulder shoulder is offline
Miembro
 
Registrado: abr 2008
Posts: 441
Poder: 17
shoulder Va por buen camino
Por si alguien me puede ayudar en el Post mas arriba yo deje escrito como hice la transaccion, funcionaba barbaro, hoy a la mañana me quedo tomada o bloqueada la tabla principal, podian leer pero no se podia hacer ningun insert o update.

Baje el motor, hice de todo (unlock, etc) y nada, a la hora volvio a funcionar bien. Como se hace cuando hay un deadlock para destrabar la tabla?
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
Problema con Stored Procedure para actualizar tabla con datos de otra tabla. Adrian Murua MySQL 4 04-02-2012 02:54:49
Problema en Bloqueo de Registro.... AGAG4 Conexión con bases de datos 0 10-10-2005 22:27:45
Bloqueo de tabla con BDE risu Varios 0 18-02-2005 01:40:26
Bloqueo de tabla paradox cramos73 Conexión con bases de datos 1 21-04-2004 07:40:24
Bloqueo por fila de una tabla Igor MS SQL Server 1 06-08-2003 16:14:15


La franja horaria es GMT +2. Ahora son las 01:49:05.


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