FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Procedimiento almacenado que no hace nada dentro de un trigger
Tengo una tabla facturas, que contiene un campo "si_aplica". A su vez tengo un procedimiento almacenado que dado un numero de factura hace varios calculos con los campos del registro y actualiza el campo "si_aplica".
La tabla facturas tiene un trigger que se dispara despues de cada inserción. Deseo llamar al procedimiento almacenado que hace el cálculo dentro del trigger, para que cada vez que haya una inserción se haga el cálculo ya mencionado. Si llamo al procedimiento almacenado "por fuera", es decir, no dentro del trigger. Hace lo que tiene que hacer. Sin embargo si lo llamo dentro del trigger, no hace nada ni envía ningún mensaje de error. No es una referencia circular ya que el procedimiento almacenado hace un UPDATE en la tabla facturas y se ejecuta justo después de cada INSERT, es decir, el registro ya existe en la tabla. Antes de meterme a modificar algo quería preguntar a ver si a alguien le sucedió o bien si estoy dando por hecho que MySQL se comporta de una forma cuando en realidad no es así.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#2
|
||||
|
||||
No estaría mal un ejemplo de cómo estás llamando al procedimiento almacenado desde el disparador.
// Saludos |
#3
|
||||
|
||||
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#5
|
||||
|
||||
En efecto Roman, las otras sentencias si se ejecutan, en el código que puse no aparece el for each row porque el administrador que uso (Navicat) lo pone por default al escribir un trigger. El trigger ya funcionaba bien anteriormente, las otras sentencias ya existían pero decidí que en lugar de meter todo el código ahi en el trigger mejor hacer un SP por separado y llamarlo desde ahí.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#6
|
||||
|
||||
Aunque no puedo asegurarlo, me temo que el ámbito de las variables new.XXX no sobrepasa los límites del trigger. Esto quiere decir que cuando ejecutas el SP desde el trigger, los valores de new.NO_TALON y new.SUCURSAL se convertirán seguramente en nulos, con lo que el procedimiento no hará nada.
De ahí que cuando lo ejecutas desde fuera, le das unos valores que "entiende" el SP realizando la actualización correctamente. Lo puñetero del tema es que no da ningún error. A mí me pasó con Firebird, pero seguramente con MySQL será parecido. Mira a ver si puedes trazar los valores de los parámetros ( por ejemplo actualizando un registro localizado) para ver qué valores contienen. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
ALTER TRIGGER dentro de un Procedimiento | Vlady | SQL | 2 | 11-06-2010 19:04:50 |
Procedimiento almacenado ejecutado desde un trigger. | Gabichu | Firebird e Interbase | 3 | 30-09-2008 18:51:11 |
Llamada a Procedimiento Almacenado desde dentro de un Thread | MontarazAE | MS SQL Server | 2 | 29-05-2007 17:46:34 |
Desactivar trigger desde procedimiento almacenado | oliverinf | Firebird e Interbase | 5 | 09-10-2004 16:17:45 |
Ejecutar Procedimiento Almacenado en Trigger | AGAG4 | SQL | 16 | 21-09-2004 03:27:47 |
|