| 12345678910111213141516171819202122232425262728293031323334353637 |
- -- Migration pour corriger les données existantes et maintenir la cohérence du nombre d'articles
- -- Mettre à jour le article_count pour tous les flux existants
- UPDATE public.feeds
- SET article_count = (
- SELECT COUNT(*)
- FROM public.articles
- WHERE articles.feed_id = feeds.id
- );
- -- Créer une fonction pour maintenir automatiquement le article_count
- CREATE OR REPLACE FUNCTION public.update_feed_article_count()
- RETURNS TRIGGER AS $$
- BEGIN
- -- Mise à jour du compteur d'articles pour le flux concerné
- UPDATE public.feeds
- SET article_count = (
- SELECT COUNT(*)
- FROM public.articles
- WHERE feed_id = COALESCE(NEW.feed_id, OLD.feed_id)
- )
- WHERE id = COALESCE(NEW.feed_id, OLD.feed_id);
-
- RETURN COALESCE(NEW, OLD);
- END;
- $$ LANGUAGE plpgsql;
- -- Créer des triggers pour maintenir automatiquement le article_count
- CREATE TRIGGER update_feed_article_count_on_insert
- AFTER INSERT ON public.articles
- FOR EACH ROW
- EXECUTE FUNCTION public.update_feed_article_count();
- CREATE TRIGGER update_feed_article_count_on_delete
- AFTER DELETE ON public.articles
- FOR EACH ROW
- EXECUTE FUNCTION public.update_feed_article_count();
|