Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Skeletron en 29 Mayo 2010, 00:18 am



Título: UDF? Procedimientos Almacenados? cual?
Publicado por: Skeletron en 29 Mayo 2010, 00:18 am
Hola gente.
He escuchado que hay 3 maneras de "controlar eventos" en MySQL
UDF, Procedimientos ALmacenados, y un tercero que no lo recuerdo.


Resulta que yo quiero que, cada vez que una noticia es agregada a mi web, con X tag (tema relacionado), quiero que aumente en 1 punto (valor=valor+1) el valor de "Cantidad" que está dentro de la descripcion de la tag.

EN la tabla TAGS; tengo:
ID_tag
nombre_tag
Cantidad

Cantidad guarda el numero de la cantidad de noticias que utilizan esa tag.

QUe conviene utilizar?


Título: Re: UDF? Procedimientos Almacenados? cual?
Publicado por: raul338 en 29 Mayo 2010, 00:39 am
No entendi bien como lo preguntaste :P

Si lo que quieres que la cantidad refleje la cantidad de noticias con el tag (valga la redundancia, pero es mala practica por lo que se) entonces necesitas los triggers

Código
  1. CREATE TRIGGER myTriggersito BEFORE INSERT ON tablaNoticias
  2. FOR EACH ROW UPDATE TAGS SET Cantidad = Cantidad + 1; -- Dudo que funcione, pero captas la idea no?
  3.  

Y sino puedes usar las vistas o un varios selects para hacerlo por codigo (buena practica) :P


Título: Re: UDF? Procedimientos Almacenados? cual?
Publicado por: Skeletron en 29 Mayo 2010, 18:09 pm
Essoo... el otro era TRIGGERS.
Pero resulta que mi hosting no me deja crear TRIGGERS!

FUCK!


Gracias igual viejo!


Título: Re: UDF? Procedimientos Almacenados? cual?
Publicado por: raul338 en 29 Mayo 2010, 21:08 pm
Te digo que es mala practica y crees una vista a partir de varios selects :)


Título: Re: UDF? Procedimientos Almacenados? cual?
Publicado por: Skeletron en 29 Mayo 2010, 22:16 pm
Voy a tener que hacer un update manual... digamos que, con una 2º sentencia


Título: Re: UDF? Procedimientos Almacenados? cual?
Publicado por: -Ramc- en 31 Mayo 2010, 17:54 pm
Voy a tener que hacer un update manual... digamos que, con una 2º sentencia
Pero, ya te dijeron arriba que es mala practica, en algún momento pueden no ser consistentes los datos, además tendrías que tener uno para cuando se borra la entrada también y otro para cuando se modifica, verificar que tenga todavía el tag, etc.


Título: Re: UDF? Procedimientos Almacenados? cual?
Publicado por: ^Tifa^ en 1 Junio 2010, 02:52 am
Sino quiere considerar lo de la Vista (Que seria favorable en este caso pero.... ) reconsidera de verdad lo del update manual.. la Vista seria 1 solo paso y controlado por la DB como tal... un Update manual como dices, sera controlado por varias consultas SQL, puede crear datos redundantes o erroneos ( imaginate que insertas datos a tus tablas, y en lo que haces el UPDATE manual otro usuario elimina el ultimo registro donde colocaste el ID final), y finalmente aplicar los cambios...

Eso es consumo de CPU que aunque sean fraciones de segundos, te evitarias tener que rebuscar y peticionar tantas lecturas de RAM o obtener datos errones o similares...

Yo consideraria la Vista.