j'ai une base de données avec deux tables A et B. A est beaucoup plus grand que B.PostgreSQL - Trigger après l'importation
de certains critères spécifiques, j'ai vue construit à partir des enregistrements de la table A. Appelons V a.
Une deuxième vue, V V un -B, est la différence bewteen enregistrements qui se trouvent sur V un et B (tous les enregistrements sur V un qui ne sont pas dans B). V est une taille supérieure ou égale à B.
Les deux tables, A et B, ont la même structure de colonnes, sauf une, un numéro de série. Les données sont chargées dans ces tables via l'importation à partir d'un fichier CSV. Une colonne remplit automatiquement la date à laquelle chaque enregistrement a été créé. Les importations devraient être mensuelles.
Le problème: Je dois mettre à jour les dossiers du tableau A qui existent en V V un -B, récemment créé (qui est, après l'importation de nouvelles données en A et B) et ont un champ comme NULL (je suppose que peu importe lequel). La fonction de déclenchement doit rechercher si chaque élément de V V -B a une copie exacte du mois précédent. Si c'est le cas, la valeur du champ doit être copiée de l'ancien enregistrement vers le nouveau. Sinon, une valeur prédéfinie est écrite.
Parce que V V un -B dépend à la fois A et B, je ne sais pas où mettre la gâchette. Si je le mets sur A, la vue n'aura pas encore toutes les données. Si je le mets sur B, comment puis-je m'assurer qu'il ne se répète pas plus d'une fois par importation? Serait-ce une meilleure idée d'utiliser une procédure stockée (fonction) manuellement?
Merci.
EDIT: ajout « chaque élément récemment créé » pour la clarification, le déclencheur n'a pas à faire défiler tous les enregistrements V V un -B chaque fois, seulement ceux ajoutés récemment.
La valeur NULL n'est pas une valeur, elle ne peut donc pas être une valeur pour une clé primaire. – wildplasser