Error al ingresar registro relacionado con clave secundaria

Consultas, trucos, consejos. Todo sobre Clarion en todas sus versiones
Clarioneros2016z
Novato
Mensajes: 10
Registrado: Dom Sep 25, 2016 5:07 pm
Contactar:

Re: Error al ingresar registro relacionado con clave secunda

Mensaje por Clarioneros2016z » Dom Oct 09, 2016 6:14 pm

Mauricio escribió:En Clarion las claves las definís como Restrict Server y no hacen absolutamente nada. Tiene que ser el motor el que se encargue de todo.
Ahora logre que funcionen correctamente las claves foraneas, pero si pongo la clave primaria autonumerada (tabla libros) me tira el mismo error. osea pareciera que si la tabla tiene claves foraneas no se pueden usar claves autonumeradas.
que puede ser?


Avatar de Usuario
Mauricio
Desarrollador de Clarion
Mensajes: 1125
Registrado: Dom Feb 06, 2011 9:34 am
Ubicación: España
Contactar:

Re: Error al ingresar registro relacionado con clave secunda

Mensaje por Mauricio » Lun Oct 10, 2016 5:07 am

Es que tampoco pongo las claves autonumeradas. Cuando una clave es autonumerada Clarion genera un registro en el insert antes de la confirmación, un registro fantasma. Si le definiste una constraint, este registro dará error porque no tiene un valor válido para la línea generada. Autonumerado Clarion, en SQL, es MALO :).
Yo trabajo con MS SQL, la tabla tiene un campo IDENTITY, en Clarion es un LONG y le ponés, en las propiedades, IsIdentity = TRUE.
Mauricio, básicamente usando Clarion 6.3
www.tdcsoftware.com y www.clarioneros.com/blog

Clarioneros2016z
Novato
Mensajes: 10
Registrado: Dom Sep 25, 2016 5:07 pm
Contactar:

Re: Error al ingresar registro relacionado con clave secunda

Mensaje por Clarioneros2016z » Jue Oct 13, 2016 11:02 pm

Mauricio escribió:Es que tampoco pongo las claves autonumeradas. Cuando una clave es autonumerada Clarion genera un registro en el insert antes de la confirmación, un registro fantasma. Si le definiste una constraint, este registro dará error porque no tiene un valor válido para la línea generada. Autonumerado Clarion, en SQL, es MALO :).
Yo trabajo con MS SQL, la tabla tiene un campo IDENTITY, en Clarion es un LONG y le ponés, en las propiedades, IsIdentity = TRUE.
Una ultima consulta, yo uso firebird 2.5, y hasta donde se, no acepta campos IDENTITY, creo que la version 3 si los acepta, pero tengo que usar la 2.5, osea que para trabaje como quiero tengo que crear un trigger personalizado, utilizando como utilitario IBexpert me lo crea casi de manera automatica, pero obvio no funciona en este caso, el codigo que me genera es el siguiente:

Código: Seleccionar todo

AS
BEGIN
  IF (NEW.IDLIBRO IS NULL) THEN
    NEW.IDLIBRO = GEN_ID(GEN_LIBROS,1);
END
Como no puedo usar campos IDENTITY, como podria modificar el trigger anterior para que se comporte como un campo IDENTITY, para que desde clarion no me de el error al autocompletar.

Gracias.

Avatar de Usuario
Mauricio
Desarrollador de Clarion
Mensajes: 1125
Registrado: Dom Feb 06, 2011 9:34 am
Ubicación: España
Contactar:

Re: Error al ingresar registro relacionado con clave secunda

Mensaje por Mauricio » Vie Oct 14, 2016 8:24 pm

Tenés que usar una secuencia y un trigger. El trigger lo ponés BEFORE INSERT y te va a generar el ID que quieras.
Esto lo saqué de aquí: http://stackoverflow.com/questions/3455 ... d-database
Mauricio, básicamente usando Clarion 6.3
www.tdcsoftware.com y www.clarioneros.com/blog


Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 27 invitados