![]() |
incremento de store procedure
hola a todos, estoy desarrollando una aplicacion en delphi 5.0 y ya baje interbase firebird v 6.0 ya cree mis tablas, generadores, store procedure y trigger para autoincremento de ID's.
Con los store procedure cree mis autoincrementos de id al igual que los trigger pero la verdad no se como se manadan a llamar los store procedure y los trigger no se si se tiene que crear los dos o basta con los store procedure desde la aplicacion cliente. mi tabla se llama deptos dos campos id interger prymary key y area varchar(25) create procedure proxArea returns (cod integer) as begin cod=gen_id(G_Dep); end Como se realiza la configuración es decir los parametros en las propiededes de delphi. Se los agradeceria si me orientaran. Gracias |
Solo debes hacerlo en una de las dos opciones. Si no necesitas recuperar en el cliente el registro recien insertado, yo los pongo en el trigger.(Por norma hay que trasladar todas las reglas posibles al servidor).
En el caso de que si necesites seguir trabajando en la parte cliente con el registro recien insertado necesitas saber el valor de la primary key de ese registro y ese valor no llega al cliente con la asignacion en el trigger. Si lo quieres hacer con el store procedure tienes que lanzar una consulta: select cod from proxArea Ojo: tienes mal el procedimiento; create procedure proxArea returns (cod integer) as begin cod=gen_id(G_Dep); suspend; /*si no pones esto siempre te devolvera null*/ end Yo uso los FIB+ y estos llevan encapsulado en la clase TfibDatabase una funcion gen_id. Saludos |
Cita:
Hasta luego. ;) |
Hola.
Creo que ese suspend es necesario en Interbase 6, aunque en Firebird 1 ya está solventado el bug. NOTA: uper, no existe Firebird 6, debes haber instalado Interbase 6. http://firebird.sourceforge.net Saludos. |
una consulta...
ok, ya voy entendiendo, scordoba los auto incrementos los haré con trigger, y tengo entendido que se ejecutan en conjunto a la tablas que uno crea son algo así como eventos de las propias tablas, pero ya no hay que programarlas desde la aplicación del cliente los trigger o como se llaman. En cuando a que si quiero recuperarlos como esta esa explicación, es decir que yo inserte un registro, se ejecutara y me pondrá el valor pero si cancelo la acción, devuelve el valor para la próximo inserción, esto es lo correcto.
Mi trigger de departamento es: CREATE TRIGGER T_dep FOR Dept ACTIVE BEFORE INSERT POSITION 0 AS begin IF (NEW.ID IS NULL) THEN NEW.ID=GEN_ID(G_dep,1); end Donde: G_dep es mi generador antes creado Dept es mi tabla ID es mi campo clave primaria de la tabla Dept Y los componentes Ibstoresprocedures se usaran para los storeprocedures de la base de datos, pero eso Si guillotmarc me equivoque como se hace mención de interbase/firebird yo considere que es libre interbase conocido con ese nuevo nombre por eso lo hacia referencia, disculpa; una cosa es firebird 1.5 que es desarrollado por un grupo de personas que después de que se libero interbase open source dedicadas a mejorar este software hasta este momento yo se de esto, pero por un lado es firebird y otro es interbase 6.0 cada uno por su lado verdad. Bueno, se los agradezco el poder orientarme, espero alguna respuesta después de mi respuesta.. |
una consulta...
ok, ya voy entendiendo, scordoba los auto incrementos los haré con trigger, y tengo entendido que se ejecutan en conjunto a la tablas que uno crea son algo así como eventos de las propias tablas, pero ya no hay que programarlas desde la aplicación del cliente los trigger o como se llaman. En cuando a que si quiero recuperarlos como esta esa explicación, es decir que yo inserte un registro, se ejecutara y me pondrá el valor pero si cancelo la acción, devuelve el valor para la próximo inserción, esto es lo correcto.
Mi trigger de departamento es: CREATE TRIGGER T_dep FOR Dept ACTIVE BEFORE INSERT POSITION 0 AS begin IF (NEW.ID IS NULL) THEN NEW.ID=GEN_ID(G_dep,1); end Donde: G_dep es mi generador antes creado Dept es mi tabla ID es mi campo clave primaria de la tabla Dept Y los componentes Ibstoresprocedures se usaran para los storeprocedures de la base de datos, pero eso Si guillotmarc me equivoque como se hace mención de interbase/firebird yo considere que es libre interbase conocido con ese nuevo nombre por eso lo hacia referencia, disculpa; una cosa es firebird 1.5 que es desarrollado por un grupo de personas que después de que se libero interbase open source dedicadas a mejorar este software hasta este momento yo se de esto, pero por un lado es firebird y otro es interbase 6.0 cada uno por su lado verdad. Bueno, se los agradezco el poder orientarme, espero alguna respuesta después de mi respuesta.. Uper. |
La franja horaria es GMT +2. Ahora son las 12:59:33. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi