Ver Mensaje Individual
  #4  
Antiguo 15-10-2006
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Reputación: 23
Crandel Va por buen camino
El problema es que tu campo ID lo declaraste que no puede ser nulo, por lo que no puedes intentar ingresarlo sin que darle un valor al ID.

Hay varias posibles soluciones:
1. Darle un valor por defecto, por ejemplo cero. luego en el trigger lo reemplazas por el valor autoincremental.

Código SQL [-]
CREATE TRIGGER "SET_DETALLE" FOR "DETALLE" 
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  NEW.IDDETALLE = GEN_ID(GENIDDETALLE,1);
END ^

2. Ingresar el valor a traves de un procedimiento almacenado, le pasas tods los paramentros menos el ID, ahi adentro calculas el nuevo ID y se lo asignas.

Código SQL [-]
CREATE PROCEDURE ING_DETALLE
(
  IDPRODUCTO  INTEGER,
  CANTIDAD FLOAT
)
AS
  DECLARE VARIABLE ID INTEGER;
BEGIN
  ID = gen_id(INC_CONST, 1);

  INSERT INTO DETALLE(IDDETALLE, IDPRODUCTO, CANTIDAD)
    VALUES (:ID, :IDPRODUCTO, :CANTIDAD);
END^

y posiblemente otras soluciones.
__________________
[Crandel]
Responder Con Cita