elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Triggers en Mysql
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Triggers en Mysql  (Leído 6,086 veces)
Bhrentox

Desconectado Desconectado

Mensajes: 98



Ver Perfil
Triggers en Mysql
« en: 24 Mayo 2011, 22:27 »

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 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 Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: Triggers en Mysql
« Respuesta #1 en: 25 Mayo 2011, 03:42 »

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 Desconectado

Mensajes: 209



Ver Perfil
Re: Triggers en Mysql
« Respuesta #2 en: 25 Mayo 2011, 11:03 »


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 Desconectado

Mensajes: 98



Ver Perfil
Re: Triggers en Mysql
« Respuesta #3 en: 27 Mayo 2011, 14:11 »

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 Desconectado

Mensajes: 98



Ver Perfil
Re: Triggers en Mysql
« Respuesta #4 en: 28 Mayo 2011, 03:05 »

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 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"
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Hay desencadenadores (triggers) en mysql
PHP
cristiano1818 1 2,816 Último mensaje 26 Junio 2009, 05:09
por HardieVon
duda sobre triggers
Bases de Datos
twistercf 0 1,514 Último mensaje 25 Julio 2011, 05:10
por twistercf
Triggers en Oracle
Bases de Datos
inquilin@19 2 2,042 Último mensaje 1 Marzo 2012, 22:52
por inquilin@19
Hacer Triggers en un Procedimie
Bases de Datos
HenBAl 0 1,013 Último mensaje 17 Mayo 2015, 07:58
por HenBAl
Asertos o triggers por tupla n cantidad de relaciones
Programación General
sebapoli00 0 331 Último mensaje 22 Junio 2020, 03:12
por sebapoli00
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines