Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-07-2006
Puche Puche is offline
Miembro
 
Registrado: may 2004
Posts: 10
Poder: 0
Puche Va por buen camino
Thumbs up Autoincremental Firebird

Hola acabo de pasar una b.d. de paradox a firebird 1.5. Los campos autoincrementales de paradox se me han convertido en Triggers para que la aplicación pueda funcionar, pero cuando estos campos pertenecen a una clave primaria, el Trigger falla, y no me deja
Insertar, me salta este error: “Field CODIGO must have a value”. Claro, ya que no permite una clave en nulo.

La tabla es esta:
CREATE TABLE "ACTU_VINCULOS" (
"CODIGO" INTEGER NOT NULL /* "CODIGO" */ ,
"COD_REPRE" VARCHAR(10) /* "COD_REPRE" */ ,
"QUERYCAB" VARCHAR(100) /* "QUERY CAB" */ ,
"QUERYLIN" VARCHAR(100) /* "QUERY LIN" */
);

/* Indexes for table "ACTU_VINCULOS.DB" */
/* Found Index Primary Index For This Table, Options [ixPrimary,ixUnique] */
ALTER TABLE "ACTU_VINCULOS" ADD CONSTRAINT "ACTU_VINCULOS_PRIMARY" PRIMARY KEY ("CODIGO");

/* Generators for AutoInc fields for table "ACTU_VINCULOS.DB" */
/* SELECT max(ACTU_VINCULOS.DB.CODIGO) FROM ACTU_VINCULOS.DB */

CREATE GENERATOR "GEN_ACTU_VINCULOS_CODIGO";
SET GENERATOR "GEN_ACTU_VINCULOS_CODIGO" TO 15;

SET TERM ^;
CREATE TRIGGER "TRIG_ACTU_VINCULOS_BI" FOR "ACTU_VINCULOS" BEFORE INSERT
AS BEGIN
IF(NEW."CODIGO" IS NULL) THEN NEW."CODIGO" = GEN_ID("GEN_ACTU_VINCULOS_CODIGO",1);
END ^


Alguien podría decirme por qué no se dispara el Trigger? Muchas gracias a todos.
Responder Con Cita
  #2  
Antiguo 19-07-2006
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Checa Esto...

Pues a simple vista todo parece bien, no tendrás el trigger desactivado????

Última edición por AGAG4 fecha: 19-07-2006 a las 21:45:11.
Responder Con Cita
  #3  
Antiguo 05-08-2006
Avatar de PepeLolo
PepeLolo PepeLolo is offline
Miembro
 
Registrado: jun 2003
Ubicación: Fuenlabrada - Madrid - Espagna
Posts: 265
Poder: 21
PepeLolo Va por buen camino
Cita:
Empezado por Puche
Hola acabo de pasar una b.d. de paradox a firebird 1.5. Los campos autoincrementales de paradox se me han convertido en Triggers para que la aplicación pueda funcionar, pero cuando estos campos pertenecen a una clave primaria, el Trigger falla, y no me deja
Insertar, me salta este error: “Field CODIGO must have a value”. Claro, ya que no permite una clave en nulo.


Chequea el TField del DataSet, seguro que tienes la propiedad required=true del campo "CODIGO".

Saludos.
__________________
PepeLolo
El hombre el único virus que mide más de unas cuantas micras
Responder Con Cita
  #4  
Antiguo 05-08-2006
aledieb aledieb is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires, Argentina
Posts: 141
Poder: 19
aledieb Va por buen camino
Hola como haces la inserción, si usas sql directo no pongas ese campo en el insert.

El error te lo va a dar siempre que quieras modificar el valor de ese campo, aunque no pertenezca a una clave primaria.

Si usas componentes como IBDataset, hay una propiedad "GeneratorField" donde se indica el campo autoincremental y el metodo para el mismo, además tenes que configurar las sentecias insert, update, etc para que no modifiquen ese campo.
__________________
Suerte
Alejandro

Última edición por aledieb fecha: 05-08-2006 a las 15:53:16.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Modificar AutoIncremental tarco35 Conexión con bases de datos 6 12-04-2005 20:06:23
Campo autoincremental en Oracle Onti Oracle 5 25-02-2004 04:59:11
Campo autoincremental tarco35 Tablas planas 1 10-11-2003 14:53:25
Campo AutoIncremental PrimaryKey cpal Firebird e Interbase 13 10-09-2003 19:21:50
campo AutoIncremental en Interbase Alejo Firebird e Interbase 3 28-08-2003 00:27:06


La franja horaria es GMT +2. Ahora son las 10:58:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi