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 21-01-2010
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Cita:
Empezado por HccSoft Ver Mensaje
Tendría el mismo problema que ahora. El problema es que entre el SELECT que busca el número mayor de ese campo y el insert alguien ha ejecutado esa misma consulta teniendo ambos usuarios el mismo número. Para que pase ha de dar la casualidad que los dos usuarios creen un nuevo registro a la vez. No ocurre casi nunca pero es algo que no me puedo permitir que falle.

Entre el SELECT y el INSERT pueden pasar milisegundos pero ya es suficiente como para encontrar registros con el mismo número.

Si invierto el proceso tendría el mismo problema a la hora de guardar y crear el nuevo número. Si dos usuarios guardaran a la vez, ambos acabarían con el mismo número como ahora.
La forma de hacer lo que digo es con una tabla que guarda un contador y que se bloquea en el momento de grabar el número incrementado.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #2  
Antiguo 21-01-2010
HccSoft HccSoft is offline
Miembro
 
Registrado: may 2006
Posts: 14
Poder: 0
HccSoft Va por buen camino
Cita:
Empezado por marcoszorrilla Ver Mensaje
La forma de hacer lo que digo es con una tabla que guarda un contador y que se bloquea en el momento de grabar el número incrementado.

Un Saludo.
Al final he agrupado todo en una misma transacción. El SELECT para buscar el número, un INSERT y finalmente otro SELECT con el índide identidad para poder acceder al nuevo registro.

De todas formas me interesaría saber como se puede bloquear el acceso a una tabla mientras realizas alguna operación. Nunca va mal tener varias soluciones para estos problemas.

Gracias a todos
Responder Con Cita
  #3  
Antiguo 21-01-2010
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Obviamente el bloqueo de un registro varía de unos motores a otros por lo que la mejor solución es consultar la ayuda para el tipo de tablas-componentes-motor utilizado.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
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
Problemas al grabar Facturas o Pedidos? FelipeDiaz Conexión con bases de datos 4 14-01-2008 21:14:28
Pedidos con un mes de antiguedad ¿¿¿cómo??? !!!!!!!! david_uh SQL 5 06-08-2007 05:54:30
Ayuda con sistema de pedidos XBart OOP 2 20-07-2006 00:48:51
Ayuda con consulta de ultimos pedidos Faust SQL 2 10-07-2006 09:51:01
consulta sql (pedidos y cotizaciones) Caro SQL 2 13-06-2006 17:52:47


La franja horaria es GMT +2. Ahora son las 04:18:17.


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