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 10-06-2007
Avatar de brakaman
[brakaman] brakaman is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: Castellon - España
Posts: 289
Poder: 18
brakaman Va por buen camino
Crear generador de campo.

Hola tengo creada una tabla con el IBExpert (personal) y en un campo , el cual tambien es Not Null y primary key, quiero añadirle un generador que incremente automaticamente el campo en 1, el valor del primer registro me lo pregunta, contesto 1., le asigno el generador al campo.

Ah el campo es integer.

Voy a dar de alta un registro pero no me aplica el generador.

¿Donde se define el incremento deseado?

¿No son compatibles el generador con un primary key?

Si en vez de un generador pruebo a asignar un trigger (Before insert) que haga lo mismo o un procedure recibo igualmente error, es obvio que tengo algun dato mal.

Gracias por vuestra ayuda.
Responder Con Cita
  #2  
Antiguo 10-06-2007
pvizcay pvizcay is offline
Miembro
 
Registrado: jun 2006
Posts: 147
Poder: 18
pvizcay Va por buen camino
el generador no se asigna a un campo, lo tienes que usar tu en la sentencia insert into o definir un trigger que incremente la secuencia y lo asigne a la PK (el problema de esto es que desde tu aplicación no se conocera la PK para identificar la nueva tupla.. por eso no te lo recomiendo)
Responder Con Cita
  #3  
Antiguo 10-06-2007
Avatar de brakaman
[brakaman] brakaman is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: Castellon - España
Posts: 289
Poder: 18
brakaman Va por buen camino
Ya, lo que trato es de crear un campo con autoincremento automatico, entonces .... ¿Tengo que declarar un nuevo DOMAIN y como le indico que lo quiero autoincrementado?

¿Funcionaria esto?

Esto de Firebird requiero tiempo ....

Saludos.
Responder Con Cita
  #4  
Antiguo 11-06-2007
pvizcay pvizcay is offline
Miembro
 
Registrado: jun 2006
Posts: 147
Poder: 18
pvizcay Va por buen camino
no existe ese concepto de otras bases de datos, al menos con la versión 1.5 que es la que uso..

salu2
Responder Con Cita
  #5  
Antiguo 11-06-2007
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 22
sitrico Va por buen camino
Si es un campo de autoincremento lo puedes hacer así:

1ro creas un generador (ibExpert)

Código SQL [-]
CREATE GENERATOR GEN_FACTURAS_ID;
SET GENERATOR GEN_FACTURAS_ID TO 0;

2do creas un trigger (before insert)

Código SQL [-]
SET SQL DIALECT 3;

SET NAMES NONE;

CREATE GENERATOR GEN_FACTURAS_ID;

SET TERM ^ ;


CREATE TRIGGER FACTURAS_ID FOR FACTURAS
ACTIVE BEFORE INSERT POSITION 0
AS
begin
IF (NEW.IDFACTURA IS NULL) THEN
    NEW.IDFACTURA = GEN_ID(GEN_FACTURAS_ID,1); -- aqui pones el generador
end
^


SET TERM ; ^

Y por último cada vez que lances el Insert, manda el campo de autoincremento como null (lo que disparará el trigger)

Código SQL [-]
Insert into AD_FACTURAS 
(IdFactura, fecha, Monto) Values
(Null, :Fecha, :Monto)

De cualquier manera busca en el foro "autoincremento" que hay bastante.
__________________
Sitrico
Responder Con Cita
  #6  
Antiguo 11-06-2007
Avatar de brakaman
[brakaman] brakaman is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: Castellon - España
Posts: 289
Poder: 18
brakaman Va por buen camino
Hola Sitrico.

Pues funciona, pero la verdad creia que existia un campo de este tipo, es un poco darle vueltas para conseguir algo que gestores de Bases de datos de menos "Categoria" te dan hecho. (Paradox, Access), en fin....

Sigo preguntando haber si consigo gente tan amable como tu que vaya contestando.

Muchisimas gracias.
Responder Con Cita
  #7  
Antiguo 11-06-2007
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 22
sitrico Va por buen camino
Al principio pensaba igual que tú, pero creeme, una vez que le agarras la caida al firebird (y yo aun estoy en eso), te darás cuenta que este enfoque no es ningun problema .
__________________
Sitrico
Responder Con Cita
  #8  
Antiguo 13-06-2007
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

No comparen a dios con un brujo.

Lo del generador te mas libertades de la que podrías imaginarte.

Se escapa del control transaccional. Que a mi parecer te evita muchisimos dolores de cabezas. Cosa que no hace un campo auto ¿Ho si lo hace?.

Bueno como te dijeron en le mensaje anterior una vez lo uses veras las vertidus (Te lo digo yo que lo uso antes de que existiera firebird y lo comense a usar buscando evitar lo famosos bloques muertos de sistemas manejadores de archivos).
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
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
Crear un campo dataSetFiell en un ClientDataset jmlifi Varios 3 19-01-2006 15:34:06
crear una llave alfanumerica con un generador reina SQL 3 17-08-2005 19:49:44
crear campo graphic JoseQ Conexión con bases de datos 11 04-01-2005 10:48:06
Crear Campo Calculado yusnerqui Varios 2 13-04-2004 16:54:58


La franja horaria es GMT +2. Ahora son las 17:08:11.


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