Autor
|
Tema: Triggers en Mysql (Leído 7,910 veces)
|
Bhrentox
Desconectado
Mensajes: 98
|
Hola, veran tengo un problema con los llamados Triggers en mysql lo que tengo que hacer es esto:
Crear un trigger que cuente los registros de la tabla employees y mantenga ese numero actualizado en una tabla llamada cuenta, este trigger actuara después de una instrucción insert o delete ejemplo si se introduce un registro nuevo en la tabla aumentara en uno el contador, si se elimina un registro se disminuirá en uno el contador.
Estaba pensando en si se pueden hacer condiciones anidadas en un solo trigger o alguien que sepa de esto alguna sugerencia??
Bueno ya encontre que si se pueden realizar condiciones anidadas ahora el problema es ese llamado contador como hacer que me cuente los registros de la tabla que ya tengo y que despues se vaya aumentando o disminuyendo segun sea el caso.
Salu2 y les agradezco de antemano.
|
|
« Última modificación: 24 Mayo 2011, 22:38 pm por Bhrentox »
|
En línea
|
"Enseñar a los niños el uso de software libre en las escuelas, formará individuos con sentido de libertad“ “Microsoft no es el diablo, sólo hacen sistemas operativos vulgares.” "No temo a los ordenadores; lo que temo es quedarme sin ellos" "Una vez un ordenador me venció jugando al ajedrez, pero no me opuso resistencia cuando pasamos al kick boxing"
|
|
|
Valkyr
Desconectado
Mensajes: 646
Divide y vencerás
|
Pues antes de crear el trigger creas la tabla cuenta, almacenas en ella el valor de contar todos los registros con un COUNT(), luego a la hora de definir el trigger si es una inserccion aumentas en uno dicho valor, si es un delete decrementas en uno. Esa es la idea de una forma así general, ahora sería cuestión de implementarlo.
Saludos.
|
|
|
En línea
|
|
|
|
KuraraGNU
Desconectado
Mensajes: 209
|
1. Si, se pueden anidar.
2. Como dice Bhrentox, creas la tabla cuenta primero con el count(). Despues, no hagas que automaticamente sume o reste dependiendo si se hace un insert o un delete, sino si la insercion o la supresion de una fila se ha llevado a cabo de forma correcta.
No recuerdo bien como van los triggers, soy de memoria volatil, asi que no te puedo ayudar ahora mismo en los pasos que sigue un trigger. Se que crea una tabla temporal y si ocurre lo que debe ocurrir, se pasan esos datos a la tabla (en el caso de insercion) y el delete no recuerdo. Si quieres lo busco y te lo digo, si ya sabes tu como funciona perfecto.
|
|
|
En línea
|
|
|
|
Bhrentox
Desconectado
Mensajes: 98
|
Muchas gracias ya pude crear el trigger de esta manera
mysql> DELIMITER || mysql> create trigger eje_b after insert on employees2 -> for each row -> begin -> insert into cuenta set dato=(select count(*) from employees2); -> END; -> || Query OK, 0 rows affected (0.01 sec)
el problema ahora esque cada vez que se ingresa un nuevo registro en la tabla de cuenta se pone una cantidad nueva es decir
primero tenia asi:
dato 23 y ahora ya va asi dato 23 22 25 26
hay alguna forma de evitar que se acumulen y que solo ponga el dato actual segun yo debo hacer un update pero no se como realizar la sentencia espero alguien sepa salu2 y gracias por su ayuda.
|
|
|
En línea
|
"Enseñar a los niños el uso de software libre en las escuelas, formará individuos con sentido de libertad“ “Microsoft no es el diablo, sólo hacen sistemas operativos vulgares.” "No temo a los ordenadores; lo que temo es quedarme sin ellos" "Una vez un ordenador me venció jugando al ajedrez, pero no me opuso resistencia cuando pasamos al kick boxing"
|
|
|
Bhrentox
Desconectado
Mensajes: 98
|
Bueno pues ya resolvi el problema la solucion es esta por si despues alguien la necesita
mysql> DELIMITER || mysql> create trigger eje_b after insert on employees2 -> for each row -> begin -> insert into cuenta set dato=(select count(*) from employees2); -> END; -> || Query OK, 0 rows affected (0.01 sec) En donde va esta linea simplemente se le cambia a update y listo todo resuelto
-> insert into cuenta set dato=(select count(*) from employees2); Solucion: -> update cuenta set dato=(select count(*) from employees2);
Gracias Valkyr y KuraraGNU
|
|
« Última modificación: 28 Mayo 2011, 03:07 am por Bhrentox »
|
En línea
|
"Enseñar a los niños el uso de software libre en las escuelas, formará individuos con sentido de libertad“ “Microsoft no es el diablo, sólo hacen sistemas operativos vulgares.” "No temo a los ordenadores; lo que temo es quedarme sin ellos" "Una vez un ordenador me venció jugando al ajedrez, pero no me opuso resistencia cuando pasamos al kick boxing"
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Hay desencadenadores (triggers) en mysql
PHP
|
cristiano1818
|
1
|
3,528
|
26 Junio 2009, 05:09 am
por HardieVon
|
|
|
duda sobre triggers
Bases de Datos
|
twistercf
|
0
|
2,154
|
25 Julio 2011, 05:10 am
por twistercf
|
|
|
Triggers en Oracle
Bases de Datos
|
inquilin@19
|
2
|
2,820
|
1 Marzo 2012, 22:52 pm
por inquilin@19
|
|
|
Hacer Triggers en un Procedimie
Bases de Datos
|
HenBAl
|
0
|
2,227
|
17 Mayo 2015, 07:58 am
por HenBAl
|
|
|
Asertos o triggers por tupla n cantidad de relaciones
Programación General
|
sebapoli00
|
0
|
2,218
|
22 Junio 2020, 03:12 am
por sebapoli00
|
|