Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-11-2006
sur-se sur-se is offline
Miembro
 
Registrado: may 2003
Posts: 212
Poder: 22
sur-se Va por buen camino
Disparo de triggers en Firebird

Hola. Me está ocurriendo un problema bastante extraño con el disparo de los triggers y el borrado en cascada. Para resumir pondré la situación a modo de ejemplo:

- Tabla cabecera: número (primary key), campo1,campo2, campo3 ...
- Tabla de líneas: número (referencia a la tabla anterior, on delete cascade), orden, lcampo1, lcampo2, ...
primary key (número, orden)

La situación es tal que si borro la cabecera, por el "on delete cascade" se me borran las líneas. Esto es correcto. Sigamos...

En la tabla de líneas tengo un trigger after delete que opera de la forma siguiente:

- Lee de la cabecera el campo3 (por ejemplo) y si tiene un valor determinado ejecuta un operación de actualización.

Es decir, si borro una línea, se dispara el trigger y lee un campo de la cabecera que determina si debe efectuarse o no una operación (en mi caso actualizar las existencias).
Esto funciona bien, es decir si borro las líneas se van efectuando las operaciones de actualización.
El problema está cuando quiero borrarlo todo. En este caso borro la cabecera, y el "on delete cascade" me borra las líneas. Y aquí viene el problema. Da la impresión de que primero borra la cabecera y luego las líneas por lo que el trigger de las líneas no lee bien el valor del campo de la cabecera y no efectua correctamente la actualización cuando corresponde.

Lo lógico sería que si hay registros que apuntan a mi tabla principal (cabecera), primero se borraran las líneas (por el on delete cascade) y luego la cabecera. Pero parece que no lo hace así y el trigger no va bien.

¿Es esto lógico que funcione así?. La solución por la que he optado es lanzar primero un borrado de las líneas y luego de la cabecera, pero entonces, para que me he molestado en poner el "on delete cascade" si después no lo puedo utilizar.
Salu2.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ocultar código de Stored Procedures y Triggers en FireBird... jncrls Firebird e Interbase 4 08-01-2007 17:51:52
efecto disparo de los juegos edusus Varios 15 19-04-2006 04:10:12
Firebird 1.0.3 -- Recusividad de Triggers y Procedimientos Almacenados jverasobino Firebird e Interbase 1 27-12-2004 19:00:58
Problemas Triggers Firebird ISCOPYME Firebird e Interbase 2 29-06-2004 23:05:12
[Firebird 1.5] DSQL en procedimientos almacenados y triggers kinobi Firebird e Interbase 0 06-08-2003 21:50:27


La franja horaria es GMT +2. Ahora son las 02:05:58.


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
Copyright 1996-2007 Club Delphi