![]() |
![]() |
| 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
|
||||
|
||||
|
Personalmente creo que la solución más segura es utilizar transacciones para conseguir que la operación sea "unitaria"; No comentas qué SGBD estás utilizando, pero si además esa operación puedes hacerla en el servidor, mejor aun.
Cita:
(1º) Supongo que debes tener índice definido por el campo IDOrden; Si no es así defínelo. (2º) No hace falta hacer el SELECT de toda la tabla, cuando en realidad sólo necesitas un registro. Porque luego debes hacer el recorrido hasta el final (Last) cosa que es muy costosa. Puedes utilizar alguna de estas variantes para obtener un único registro. SELECT Max(IDOrden).... SELECT TOP(1) .... ORDER BY DESC Cita:
Deberías definir un índice único (en la Base de Datos) por el campo IDOrden, cosa que no debes tener ahora si estás obteniendo duplicados. Creo que eso es lo que está haciendo ahora, pero para grabar el número debe consultar primero cual es el último; Y entre la consulta y la grabación es cuando se le cuela otra máquina y se producen los repetidos.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#2
|
|||
|
|||
|
Uso mysql y el procedimiento lo uso justo cuando voy a grabar
|
|
#3
|
||||
|
||||
|
Revisa los ISOLATIONLEVEL de las transacciones definidos en MySQL.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#4
|
|||
|
|||
|
donde se revisa eso
|
|
#5
|
||||
|
||||
|
En la docuentación/ayuda de MySQL; Si es que deseas utilizar transacciones.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#6
|
|||
|
|||
|
La pregunta es hay alguna manera de bloquear la tabla para que nadie escriba si no que espere y si la encuentra bloqueada que vuelva a ejecutar la consulta para incrementar el numer
|
|
#7
|
||||
|
||||
|
La tabla no, el registro. Y eso es lo que intento decir que se suele hacer utilizando transacciones.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| No consigo hacer funcionar este bucle. | radge | Varios | 14 | 27-01-2009 19:54:35 |
| hacer un bucle | esimon | OOP | 4 | 25-01-2009 22:27:37 |
| Bucle for de 2 en 2 | douglas | OOP | 9 | 17-10-2007 16:55:53 |
| Se puede hacer un bucle a un TTimer | gontxalo | OOP | 2 | 18-07-2005 22:37:53 |
| bucle dentro de un bucle | Cosgaya | Varios | 2 | 06-06-2005 08:05:16 |
|