Ver Mensaje Individual
  #2  
Antiguo 02-09-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Con un trigger y un generador podrías solucionar esto:

Código SQL [-]
create trigger TABLA_BI0 for TABLA active before insert position 0
as
begin
  if ( new.CAMPO_ID = 0 ) then new.entrada = gen_id( contador_id , 1 ) ;
end

También podrías hacer un procedimiento para recalcular el campo ID.

Código SQL [-]
create procedure REORDENAR
as
declare variable clave char(8);
declare variable id integer;
begin
   /* Pongo a 0 el contador */
   contador = 0;
   /* Recorro toda la tabla */
   /* RDB$DB_KEY es un campo que identifica a cada registro */
   FOR select RDB$DB_KEY from TABLA do
         into :clave
   DO
   begin
       update TABLA 
       set CAMPO_ID = :id
       where RDB$DB_KEY=:CLAVE;
   end
end
Responder Con Cita