Para no perder el consecutivo yo hago lo siguiente:
Hice un "trigger before insert" y es ahi donde ejecuto el
Id = Gen_Id(<NombreGenerador>, 1);
y tengo entendido que solo se va a ejecutar cuando realmente se este insertando en la tabla
el codigo me queda asi (aunque no lo se poner entre "quote:")
CREATE TRIGGER SETFOLIO FOR ORDENGAS
ACTIVE BEFORE INSERT POSITION 0
as
begin
new.folio = gen_id(folio_gen,1);
end
y como usualmente nesecitamos saber cual es la clave para regresarla a la pantalla o imprimirlo, yo lo soluciono con un procedimiento que es el encargado de insertar los datos a la tabla:
ALTER PROCEDURE APPENDORDEN (CARRO SMALLINT,
PLACAS VARCHAR(10),
KILOMETROS INTEGER,
SUCURSAL INTEGER,
CHOFER VARCHAR(30),
AUTORIZO VARCHAR(30),
TIPO VARCHAR(10))
RETURNS (FOLIO INTEGER)
AS
begin
insert into ordengas(carro, placas,kilometros,sucursal,chofer,autorizo,tipo)
values (:carro,
lacas,:kilometros,:sucursal,:chofer,:autorizo,:tipo);
folio=gen_id(folio_gen,0);
end
como veran, este es el procedimiento que llamo cuando inserto un nuevo registro; le paso los valores validados previamente para que halla menos posibilidades de error y el procedimiento al tratar de insertar los datos en la tabla se dispara el trigger SETFOLIO el cual aumenta el generador y me asigna el valor en el campo folio, para despues retornar el valor de el numero de folio desde el mismo procedimiento...
...Como se pone el codigo entre rayitas???