UDF? Procedimientos Almacenados? cual?

Iniciado por Skeletron, 29 Mayo 2010, 00:18 AM

0 Miembros y 1 Visitante están viendo este tema.

Skeletron

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?

raul338

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 (mysql) [Seleccionar]

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


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

Skeletron

Essoo... el otro era TRIGGERS.
Pero resulta que mi hosting no me deja crear TRIGGERS!

FUCK!


Gracias igual viejo!

raul338

Te digo que es mala practica y crees una vista a partir de varios selects :)

Skeletron

Voy a tener que hacer un update manual... digamos que, con una 2º sentencia

-Ramc-

Cita de: Skeletron en 29 Mayo 2010, 22:16 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.

Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.

^Tifa^

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.