2012-04-11 2 views
1

J'ai besoin d'aide avec un déclencheur mysql. J'essaie actuellement de ranger un peu de code et de décharger un peu de traitement dans la base de données mysql plutôt que d'exécuter 2 requêtes et jointures.MySQL Déclenchez pour mettre à jour compte après insertion

Lorsque quelqu'un insère une vidéo dans une base de données, je voudrais que le nombre de vidéos dans le catégorie à mettre à jour.

Vous spécifiez donc l'ID de la catégorie.

C'est ce que j'ai jusqu'ici donc toute aide serait bonne car je ne semble pas être en mesure d'obtenir la syntaxe correcte.

CREATE TRIGGER 'db_videos'.'update_video_count' 
AFTER INSERT ON 'videos' FOR EACH ROW 
BEGIN 
    UPDATE video_cat WHERE video_count = video_count + 1 WHERE video_cat = video_cat; 
END; 
+0

Cette requête est pas valide, et même si elle était elle ne ferait rien. Dans votre clause where vous avez une condition à vérifier pour 'video count = video count + 1'. C'est comme essayer de faire un SQL sélectionner 'WHERE 0 = 1'. S'il vous plaît poster le DDL pour votre table de vidéos. – Perception

Répondre

2

Votre clause where est dupliquée et ambiguë. Si je comprends bien votre modèle de données correct, essayez:

CREATE TRIGGER 'db_videos'.'update_video_count' 
AFTER INSERT ON 'videos' FOR EACH ROW 
BEGIN 
    UPDATE video_cat vc 
     WHERE video_count = video_count + 1 
     and NEW.video_cat = vc.video_cat; 
END; 
-3

Ceci n'est pas une instruction mysql valide, vous utilisez deux fois WHERE !?

1

les opérations suivantes:

CREATE TRIGGER 'db_videos'.'update_video_count' 
AFTER INSERT ON 'videos' FOR EACH ROW 
BEGIN 
    UPDATE video_cat vc 
     SET video_count = video_count + 1 
     WHERE NEW.video_cat = vc.video_cat; 
END; 
Questions connexes