![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Aprendiendo a usar triggers en FB
Reconozco que hasta ahora me había ido bien sin usar estos elementos pero también reconozco que después de leer mucho tienen una potencia tremenda y son muy útiles. Bien: Tengo esta tabla:
![]() en la que quiero crear un trigger que se ejecute antes de actualizarla de forma que si el campo Estado vale 1 rechace la transación y no permita continuar. Para ello creo que el código habría de ser este: Código PHP:
![]() Pero una vez ejecutado aparentemente sin errores, si consulto las propiedades de la tabla me encuentro con esto: ![]() ¡No hay nimngún trigger creado! Pero si trato de ejecutar nuevamente el CREATE, IBManager (FB) me lanza un mensaje de error que me informa que Exception USUARIO_CONECTADO already exists. ¿Qué puedo estar haciendo mal? |
#2
|
||||
|
||||
IBManager ¿qué programa es?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
||||
|
||||
Perdón. Antes se llamaba así: SQL Manager Lite (http://www.sqlmanager.net/)
|
#4
|
||||
|
||||
¿Soporta tu versión de firebird?
¿Has probado con ibexpert?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
||||
|
||||
Sí la soporta sin ningún problema. De todas formas probaré con IBExpert
|
#6
|
||||
|
||||
En realidad en las sentencias tienes dos cosas.
Primero tienes la creacion de la excepcion. Luego tienes la creacion del trigger. Al parecer la excepcion se creo sin problemas por lo que deberias eliminar la primera sentencia de CREATE EXCEPTION. Y luego ejecuta solo la creacion del trigger. Saludos. |
#7
|
||||
|
||||
Gracias por las respuestas. Ya he decubierto que está pasando: En el CREATE TRIGGER hay dos errores de sintaxis.
Primero he puesto INTO Usuarios en vez FROM Usuarios. Segundo me falta el THEN al final del IF. Al margen de eso la sugerencia de Osorio de partir en dos el código ha funcionado a la perfección. |
#8
|
||||
|
||||
¿Y no muestra los mensajes de errores el manager que estás usando?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#9
|
||||
|
||||
Sí, pero es que con el código que puse ayer no da ningún mensaje de error. El problema creo que viene, como apunta Osorio, de tratar de hacerlo todo junto. No daba error porque la excepción si la crea y ahí termina; al hacer las dos cosas por separado en el CREATE TRIGGER sí me daba lo errores.
|
#10
|
||||
|
||||
Normalmente los "manager" tienen dos posibilidades: ejecutar una sentencia sql (create, select, insert, etc.) o ejecutar un script de múltiples sentencias. En tu caso debías ejecutar la segunda posibilidad. Seguro que el manager que has usado tiene esa opción.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#11
|
||||
|
||||
Sí. Ya te digo que el error fue mio en el planteamiento.
|
#12
|
||||
|
||||
¿Como quedaría finalmente el código corregido?
|
#13
|
||||
|
||||
Realmente es partirlo en dos: por un lado la definición de la excepción y por otro lado el trigger.
EXCEPCIÓN Código PHP:
TRIGGER Código PHP:
|
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Conversor XML a XML (aprendiendo XSLT) | Alex85 | Varios | 4 | 22-07-2015 17:21:06 |
Aprendiendo a usar Trigger... | verito_83mdq | MySQL | 11 | 23-02-2011 00:05:13 |
Aprendiendo | calistian | Varios | 4 | 14-06-2008 21:47:48 |
Aprendiendo delphi for php | JULIPO | PHP | 6 | 21-09-2007 21:19:47 |
aprendiendo a usar interbase/firebird | Robert01 | Firebird e Interbase | 15 | 22-03-2007 16:29:18 |
![]() |
|