Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Interbases Vs. Firebird (https://www.clubdelphi.com/foros/showthread.php?t=50736)

Chaja 27-11-2007 01:47:42

Interbases Vs. Firebird
 
Otra vez yo:

Bueno la duda es que quiero migrar a Firebird 2.0 pero no se si la estructura de mi base de datos lo soporta. Lei por algun lado que en los triggers no se permite las variables old y new en Before y After Insert y Update.
Lo que no se si esto se modifico o es asi. Mi estructura actual tiene mas de 300 triggers. de los cuales estan en tanto BI, AI o y otros.
Si alguien tiene una repuesta agradeceria

Luis

lbuelvas 27-11-2007 04:34:43

Hola foristas, un cordial saludo.

Interesante pregunta, cuando utilizaba el motor de bases de datos Interbase cometia un pequeño "error conceptual" al utilizar indistintamente las variabler old y new en los procedimientos almacenados.

En el siguiente cuadro muestro en que tipo de triggers se pueden utilizar:

BEFORE INSERTNEW
AFTER INSERT NEW

BEFORE UPDATE OLD NEW
AFTER UPDATE OLD NEW

BEFORE DELETE OLD
AFTER DELETE OLD

lbuelvas 27-11-2007 04:43:55

Oigan presioné tabulador y se fue el mensaje incompleto:

Continuando con mi apreciacion, me parece bueno que los señores que han elaborado Firebird a partir de Interbase hayan colocado restricciones en el uso de las variables old y new pues de esa manera evitan que el programador se equivoque, pues muchas veces escribimos codigo para un trigger tipo before cuando estamos pensando en un trigger tipo after, en lo peronal me ha sucedido.

Aplicando un poco de sentido comun, para que utilizar old en un trigger before insert ? Si el registro aun no ha ingresado a la base de datos como podemos preguntar por su valor anterior ?

De igual forma si vamos a eliminar un registro para que preguntar por el valor new si en esa accion no se esta cambiando ningun valor ?

Mi recomendacion es que te enfoques en los trigger tipo insert y delete. En los triggers tipo insert cambies los old por new y en los triggers tipo delete cambies los new por old.

jhonny 27-11-2007 14:15:20

Bueno, a pesar que lbuelvas a dejado claro el asunto quiero "rematar" un poco mas con lo siguiente:

- El old no funciona en el before Insert, ni en el after insert, ya que como explico lbuelvas, esto no tiene sentido, pero el new si funciona.

- En el Update funcionan las dos, tanto old como new, en el After como en el Before.

- En el Delete no funciona el new, ya que esto (Como tambien lo explico lbuelvas), tampoco tiene sentido, pero el Old si funciona.

Bueno, solo queria dejarlo plasmado de esta manera, me parecio que es un poco mas entendible, espero no haber enredado el asunto :).

Chaja 28-11-2007 02:58:48

Fin del Old y el New
 
Estimado Colegas:

Voy a ponerme a trabajr segun sus indicaciones, gracias y vere que sale de todo esto....

Luis


La franja horaria es GMT +2. Ahora son las 19:04:52.

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