Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

acceso unico a una tabla en un periodo de tiempo

Estas en el tema de acceso unico a una tabla en un periodo de tiempo en el foro de Mysql en Foros del Web. Buenas amigos del foro Llevo ya unos dias dándole vueltas a este tema. Os pongo en contexto Estoy desarrollando una aplicación multiusuario en la cual ...
  #1 (permalink)  
Antiguo 10/10/2008, 10:27
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 5
acceso unico a una tabla en un periodo de tiempo

Buenas amigos del foro

Llevo ya unos dias dándole vueltas a este tema.

Os pongo en contexto

Estoy desarrollando una aplicación multiusuario en la cual los usuarios pueden dar de alta contactos. El identidficador de estos contactos es único. Y lo calculo justo antes de hacer el INSERT. La secuencia de lo que yo quiero es:

- bloquear una tabla y que sólo tenga acceso yo (tanto Lectura como Escritura)

- calcular el id de contacto--> el ultimo + 1

- realizar el inser con el id calculado

- desbloquear la tabla y dar acceso al resto de usuarios

He estado investigando sobre LOCK TABLE y creo que puede ser la solución, aunque tengo dos dudas.

¿Si hago un LOCK TABLE miTabla WRITE nadie podra leer de la tabla?

¿Que sucederá en el resto de usuarios, les dará error o el propio MySQL esperará?
  #2 (permalink)  
Antiguo 10/10/2008, 23:28
 
Fecha de Ingreso: diciembre-2007
Mensajes: 50
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: acceso unico a una tabla en un periodo de tiempo

xq simplemente le das un AUTO_INCREMENT a tu PK si solo le kieres sumar 1.... el servidor nunca te arrojara un valor duplicado
  #3 (permalink)  
Antiguo 14/10/2008, 01:25
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: acceso unico a una tabla en un periodo de tiempo

En primer lugar gracias por contestar...

No me soluciona nada.

El caso es que necesito saber la PK en tiempo de ejecución de mi php ya que aparte de hacer el insert a la tabla de contactos tengo que guardar cierta información en otras tablas que quedan asociadas a ese contacto. P.e. Contactos puede ser una empresa, y ese contacto puede tener varias personas de contacto, esa informacion se guarda en otra tabla usando la PK del contacto como clave foranea...

I need help!!!!

Gracias y Saludos
  #4 (permalink)  
Antiguo 14/10/2008, 02:50
 
Fecha de Ingreso: octubre-2008
Mensajes: 2
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: acceso unico a una tabla en un periodo de tiempo

1) Utiliza auto-incremet
2) Una vez realizado el insert échale un vistazo a la función
int mysql_insert_id ( [int identificador_de_enlace])

Te devuelve el último id insertado en una tabla. El campo id debe ser auto_increment.

[mysql_insert_id() devuelve el identificador generado para un campo de tipo AUTO_INCREMENTED_ Se devolvera el identificador genrado por el último INSERT para el identificador_de_enlace_ Si no se especifica el identificador_de_enlace, se asume por defecto el último enlace abierto_ ]

1saludo
  #5 (permalink)  
Antiguo 15/10/2008, 02:31
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: acceso unico a una tabla en un periodo de tiempo

Gracias por vuestras contestaciones.

De acuerdo el código podría ser perfectamente un autoincremet pero bueno eso no es problem

El problem esta en que yo quiero coger el control de las tablas que voy a tratar y que nadie pueda ni siquiera leerlas hasta que halla echo todas las operaciones con ellas.

Saludos y gracias
  #6 (permalink)  
Antiguo 17/10/2008, 03:23
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: acceso unico a una tabla en un periodo de tiempo

Please! Can I help me?

::

__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!
  #7 (permalink)  
Antiguo 18/10/2008, 22:19
 
Fecha de Ingreso: octubre-2008
Mensajes: 1
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: acceso unico a una tabla en un periodo de tiempo

yo hago esto y no he tenido problemas:

LOCK TABLE mitabla WRITE
UPDATE valor SET tuvalor
UNLOCK TABLES

El bloqueo es solo por un instante, espero te ayude
  #8 (permalink)  
Antiguo 19/10/2008, 07:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: acceso unico a una tabla en un periodo de tiempo

Siempre puedes declarar una transacción, que es más segura y menos conflictiva que un LOCK (de todos modos, el lock queda definido para cierta parte del proceso, dependiendo de qué tipo de ISOLATION LEVEL se usa).
La ventaja de una transacción es que puede declararse desde el mismo código de la aplciación, dependiendo de qué lenguaje estés usando, y además qe se realiza un ROLLBACK automático cuando no se hace el COMMIT y el enlace se corta o se interrumpe, sin que la base pierda consistencia.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 20/10/2008, 01:49
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: acceso unico a una tabla en un periodo de tiempo

Gracias a todos por contestar

Cita:
Iniciado por gnzsoloyo Ver Mensaje
La ventaja de una transacción es que puede declararse desde el mismo código de la aplciación, dependiendo de qué lenguaje estés usando, y además qe se realiza un ROLLBACK automático cuando no se hace el COMMIT y el enlace se corta o se interrumpe, sin que la base pierda consistencia.
gnzsoloyo, empleo MySQL, ¿a eso te referías?, las tablas tienen Chararcter set latin1 y collation latin1_spanish_ci.

Podrías citarme algun ejemplo de como hacer una transacción

Saludos y gracias
__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:32.