![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
![]() Hola amigos del foro,fijense que tengo una duda al insertar datos a la BD.Tengo un campo que se llama eval_clave, es de tipo numerico y tiene valor autoincrementable.Al momento de insertarlo en la BD, si me incrementa el valor, hasta alli muy bien, pero al momento de borrar todos los registros de ese campo me sigue aumentando el valor desde el ultimo valor que tenia.Por ejemplo, si elimino todos los registros y el ultimo valor que tenia en eval_clave era 3, y despues cuando inserto otro registro en la BD,el valor de eval_clave aumenta a 4 en vez de que me vuelva a generar 0.Alguien sabe como modificarlo para que al momento de insertar un registro empiece desde 0?Saludos
|
#2
|
||||
|
||||
__________________
![]() Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#3
|
||||
|
||||
De todas formas, estos "generadores automáticos" no están pensado para eso, sino para ofrecer siempre un valor DISTINTO en un campo clave, para que no se repita.
Si lo modificas a mano, has perdido su "potencial" y ya lo mismo te da poner cualquier número ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#4
|
||||
|
||||
Si de pronto lo que necesitas es un identificador sin saltos (por ejemplo números de factura) lo mas práctico es crear un campo (UNIQUE) que se actualice mediante un trigger desde una tabla que haga de contador, mas o menos así (actualizaremos el campo Numero (UNIQUE) en la tabla Facturas:
Todo esto se puede hacer manteniendo el campo auntoincremental como clave principal y el generador para obtener el número. Gracias |
#5
|
|||
|
|||
Gracias Ana Maria por tu pronta respuesta. Solo que no se en que opcion de firebird hacerlo,uso el sql manager 2008 for interbase and firebird.De hecho es la primera vez que lo uso.Tu me podrias decir donde colocar el codigo que me sugeriste?
|
#6
|
||||
|
||||
Cita:
http://img146.imageshack.us/img146/8581/emsoy2.jpg Saludos.
__________________
![]() Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#7
|
||||
|
||||
yo creo que lo que tu necesitas es averiguar el ultimo valor de la clave y sumarle uno:
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#8
|
||||
|
||||
Cita:
Cita:
![]() ![]() ![]()
__________________
![]() Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#9
|
||||
|
||||
segun logro entender lo que necesita el amigo es saber cual es el ultimo numero utilizado y sumarle uno, si no hay registro lo deja en uno
![]()
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#10
|
|||
|
|||
Lo que necesito es que cuando borre todos los registros, empiece de nuevo en 0...y no que empiece en el ultimo valor que le seguia..osea si tenia 5 registros y los borro todos, al momento de volver a insertar en la BD empieza en 6..7...8..9...y eso yo no quiero.
|
#11
|
||||
|
||||
Siendo así, la solución que te da Eduarcol es perfecta.
|
#13
|
||||
|
||||
yo creo que ni eduarcol ni Ana María están entendiendo lo que necesita el amigo aquí, según entiendo (si no es así por favor corrígenme) es si el desea reiniciar la base desde 0 registros borrando todo los datos (vamos a decir a través de una sentencia delete from) es lógico que el generador no empieza desde el 0, si no que quedará el último valor usado, ejemplo, si tengo una tabla de nombres y hay 100 registros, sabemos que el último es no. 100 ¿no?, entonces si el borra los 100 registros el generador todavía sigue en el número 100 y no desde 0 y eso es lo que creo que el amigo aquí es lo que busca hacer, la solución tuya eduardo no empieza desde 0 sino 100 + 1 y el quiere 0 + 1, amigo Elite237 por favor corrígeme si no es así.
Saludos. ![]() PD. Por favor no me maten ![]()
__________________
![]() Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#14
|
||||
|
||||
Tienes razón
Tienes razón Enecuneme.
Ante tanta cosa yo haría esto: No asignar el valor de la clave en cuestión por medio de un generador si no por medio de una una función desde la aplicación, esta función usaría un query (dependiendo de con que te conectas) aquí un ejemplo con TADOQuery:
|
#15
|
||||
|
||||
Saludos, en mi opinión la utilización de generadores es lo mejor para campos "autoincremento" por lo tanto la solución que aporta enecumene es la correcta(repito, en mi opinión), quizas solo para no ajustar "manualmente" el generador a cero con un trigger así se podría hacer:
si después de la eliminacion de registros la tabla esta vacía, el generador se queda con valor cero. El problema para este metodo sería que se eliminen los registros y posteriormente se haga un rollback ya que aún así el generador estará con valor cero y la siguiente insercion de registros duplicará el campo eval_clave. Saludos |
#16
|
|||
|
|||
Cita:
|
#17
|
||||
|
||||
Cita:
Saludos.
__________________
![]() Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#18
|
|||
|
|||
![]() Una pregunta, como es la sintaxis de ese trigger?osea que significa? Saludos |
#19
|
||||
|
||||
Si, pleno, lo has acertado todo.
Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#20
|
||||
|
||||
Cita:
Saludos |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Campo Autoincrementable al máximo | casacham | Conexión con bases de datos | 1 | 08-09-2007 23:41:11 |
Campo autoincrementable en sql server 2000? | dariana20 | SQL | 2 | 25-05-2006 19:07:05 |
Campo autoincrementable | jonny0157 | C++ Builder | 1 | 11-08-2005 08:36:50 |
¿Como recuperar un valor de un campo autoincrementable? | SyncMaster | Firebird e Interbase | 3 | 11-05-2004 08:08:04 |
como crear un campo autoincrementable | acrophet | Firebird e Interbase | 2 | 14-10-2003 14:08:04 |
![]() |
|