FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Mi generador me incrementa doble y no de a 1
Hola tengo Firebird 2.1, IBExpert Delphi 6 y XP. Voy iniciando con Firebird e hice una tabla maestro y una detalle que con un generador le asigna su valor a un campo de autonincremento en ambas tablas pero en vez de generarme de a 1 me lo hace al doble. Ejemplo
CLaVE usuario 1er registro 1 jose 2do registro 3 pedro 3er registro 5 Juan Los generadores que hice con IBExpert esta asi: CREATE OR ALTER TRIGGER G_CVEEQUIPO_BI FOR EQUIPOS ACTIVE BEFORE INSERT POSITION 0 AS begin NEW.cveequipo=gen_id(gen_equipos_id,1); end CREATE OR ALTER TRIGGER PERSONAS_BI FOR PERSONAS ACTIVE BEFORE INSERT POSITION 0 AS begin NEW.CVEPERSONA=gen_id(gen_personas_id,1); end Alguien sabe que se me esta pasando porque en Delphi cada vez que doy de alta algun registro me pasa lo arriba citado. Saludos
__________________
Salu2 |
#2
|
||||
|
||||
Lo más probable es que de alguna forma llames dos veces al generador cada vez que insertas un registro.
Por ejplo., al insertar un registro, automáticamente el Trigger se dispara e incrementa el generador. Pero a la misma vez, quizás tu programa consulta el generador (incrementándolo) para asignar un valor al campo. Comprueba cuando se supone que se asigna ese valor de clave primaria, y asegúrate de que solo llamas una vez al generador.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#3
|
|||
|
|||
Estoy haciendo pruebas y curiosamente cuando doy de alta un registro y lo cancelo al generar otro registro me da el sig valor y luego lo cancelo y al dar de alta otro valor me vuelve a dar el sig. Ejemplo
Clave usuario Ejecuto Insert 1 juan Cancel Ejecuto Insert 2 Lpez Cancel Ejecuto Insert 3 juana Cancel Ejecuto Insert 4 Luis Post Ejecuto Insert 6 Luisito (si notas como antes guarde me lo dobla) Post Saludos
__________________
Salu2 |
#4
|
||||
|
||||
Si lo das de alta, el generador avanza, aunque luego lo canceles.
Supongo que con "cancelar" te refieres a hacer un rollback. Pero el 'beforeinsert' ya se ha ejecutado y ha avanzado el generador. |
#5
|
|||
|
|||
Cita:
Saludos
__________________
Salu2 |
#6
|
||||
|
||||
¿ Estas totalmente seguro que no llamas a estos mismos generadores en ningún otro sitio ?.
¿ Quizás en algunto evento AfterPost en Delphi ?.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Escanear Doble Cara, Doble Lector | karenthyuliana | Gráficos | 2 | 11-04-2008 17:29:42 |
Incrementa el porcentaje y no imprime. | zugazua2001 | Impresión | 1 | 19-05-2006 08:59:19 |
generador | novaten | Conexión con bases de datos | 1 | 09-04-2005 21:29:44 |
Campo clave incrementa | Marcosr_87 | SQL | 8 | 21-11-2004 23:24:37 |
como puedeo incrementa un campo auto numerico | simon | Conexión con bases de datos | 1 | 01-06-2004 20:55:12 |
|