Ver Mensaje Individual
  #3  
Antiguo 17-06-2003
AbcXxx AbcXxx is offline
Miembro
 
Registrado: jun 2003
Posts: 50
Reputación: 22
AbcXxx Va por buen camino
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???
Responder Con Cita