![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Gracias a los dos. Partiendo de la base de que efectivamente estoy aprendiendo a usar triggers y strored procedures; leí el capítulo que me indicáis de la Cara oculta de Builder y mucha información que he encontrado, especialmente en Teoría y Práctica sobre Firebird. Pero en todo lo que he leído no me aclara la duda que tengo.
A ver si lo he entendido bien, y perdonad si soy un pesado: En el código que pone de ejemplo fjcg02 se busca un valor en la tabla de parámetgros (SELECT FIRST ...) pero es que no es el caso que yo planteo. Yo ya sé cual es el valor de ese campo (pongamos por ejemplo, ya que resido en Toledo, el 45); por lo tanto no tengo que buscar cuál es su valor, y esa es mi pregunta: ¿Cómo le digo al trigger o al procedimiento que el código provincial es 45? El otro día Casimiro me sugería un código: Cita:
![]() |
#2
|
||||
|
||||
Es que hay muchas formas de hacerlo y no sabemos cómo lo estás haciendo tú.
Supongamos que grabas el registro desde delphi/builder. El trigger before insert sabe qué código de proveedor estás grabando, el 45, no tienes que hacer nada. Ummm... sigo sin entender el problema ![]() |
#3
|
||||
|
||||
Gracias. Ahora sí me has resuelto la duda.
|
#4
|
||||
|
||||
Ten en cuenta que los triggers se "disparan" automáticamente. Una vez programados no hay que preocuparse por ellos, hacen el trabajo repetitivo y pesado, no se interactua con ellos desde delphi/builder, son independientes.
Por ejemplo, en el ejemplo anterior que he puesto (el insert), el trigger tiene acceso al registro que se está creando. Si necesitas hacer algo con el codprov, su valor está en new.codprov
En los triggers Before/After update tienes disponible las variables new. y old. Ejemplo, automáticamente vamos a mudar a los proveedores de Madrid hacia Toledo: trigger before update ...
Depende si es un trigger insert/update/delete tienes a disposición solamente new. / old. y new. / solamente old. |
#5
|
||||
|
||||
Aqui el tema es que si pones a piñón el valor de la provincia, tendrás que tener un trigger diferente para cada BBDD de cada provincia.
Si coges el codigo de una tabla de parámetros, el trigger siempre será igual, y sólo tendrás que poner una pantalla de configuración que posibilite cambiar el valor para cambiarlo. Incluso podrías tener una tabla de provincias para hacer la selección más fácil. Creo que es más fácil hacerlo así de cara al futuro mantenimiento de la BBDD y/o aplicación que acordarse de que hay que cambiar el trigger y poner el código correspondiente. Creo que es un ejemplo de la típica decisión chunga que haces al principio de la que luego te arrepientes toda la vida... ![]() Cada uno puede hacer lo que quiera, pero ya tengo una cana, y más sabe el zorro por viejo que por zorro. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#6
|
||||
|
||||
¿Tu mensaje es para mí o para Ángel?
Si es para mí, obviamente lo que he puesto es solo un ejemplo para que Ángel entienda el funcionamiento de los triggers. Jamás se me ocurriría escribir un código así en "la vida real" ![]() |
#7
|
||||
|
||||
Jajaja,
me has hecho reir Casimiro.... el mensaje no era para tí... Bajo mi punto de vista es más fácil tener ciertos datos en tablas de configuración que desperdigados por el código. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#8
|
||||
|
||||
Cita:
Cita:
Código PHP:
Código PHP:
¿Cómo hago para meter en un stored procedure ese valor ProvTit que he sacado de una tabla y que no se modifica en toda la vida del programa? Esto es lo que no entiendo; meterlo "a capón" lo había comprendido desde el primer ejemplo que me puso Casimiro. Y los siento de veras por la paliza que os estoy dando y las molestias para explicármelo pero ya os dicho que soy bastante bruto. ![]() Cita:
![]() |
#9
|
||||
|
||||
Cita:
No sé cómo llamas a los procedimientos almacenados, tienes componentes específicos o puedes usar un ibquery "a pelo" con la sentencia: execute procedure ( parámetro 1, parámetro 2, etc )
|
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Usar objetos con variables. | jularaXD | Varios | 3 | 14-05-2013 11:06:20 |
En que momentos usar variables? | Gerson12 | Varios | 13 | 08-05-2012 03:49:43 |
procedure con parametros variables | rruffino | SQL | 1 | 05-03-2009 01:58:55 |
usar un procedure en varios formularios | adonai | Varios | 21 | 30-03-2007 17:42:34 |
Número máximo de variables en un Procedure | Ana Tudela | Firebird e Interbase | 0 | 26-04-2005 12:32:35 |
![]() |
|