Nombre de lignes maj supérieur au nombre de lignes de la table

Nombre de lignes maj supérieur au nombre de lignes de la table - SQL/NoSQL - Programmation

Marsh Posté le 09-10-2015 à 08:54:04    

Bonjour,  
 
J'ai une table avec des relevés de saisies utilisateurs. C'est une extraction brutes que j'obtiens. De jour en jour le nombre de ligne extraites grandit.  
 
Sur ces lignes qui sont éclatées par jour je fais un calcul 2/3 fois par semaine . Un regroupement et une sommation par numéro de semaine. La sommation se fait sur une clef de 5 colonnes.  
 
A un moment je transforme les codes accentués par des codes non accentués.  
 
Noté que pour cela j'ai une base ACCESS :
 
1) import des données brutes dans une table sans clef primaire.
2) création de la table de sortie vide sans clef primaire.
3) insertion des données regroupées et sommées grâce à la clef de 5 colonnes ( la sommation par clef marche à la semaine).
4) Mise à jour des lignes accentués pour l'une des colonnes d'un des 5 élèments de la clef.
5) Mise à jour des lignes accentués pour une 2ème des colonnes d'un des 5 élèments de la clef.
 
Supposons que j'ai 35 000 lignes . ACCESS va me dire 35 800 lignes ont été mise à jour .
 
Comment est il possible que cela soit possible ?  :heink:  :ouch:  
 
Merci de m'aiguiller

Reply

Marsh Posté le 09-10-2015 à 08:54:04   

Reply

Marsh Posté le 09-10-2015 à 11:10:44    

Est-ce que tu n'aurais pas de triggers ?

Reply

Marsh Posté le 09-10-2015 à 14:10:47    

Bonjour  
 
Tout à fait il y a bien un triggers à partir de l'action 6 sur ma table.
 
Requête "insert into" imbriquée à une selectio. Dans la sélection il y un regroupement selon une clef donnée de plusieurs champs.
 
Voici la requête trigger :
 

Code :
  1. NSERT INTO tabresagact ( c1, c2, c3, c4, c5, c6, c7, c8, c9 )
  2. SELECT 'S'&calendrier.semainet, import.champ2, import.champ3, import.champ4&' '&import.champ5, import.champ6, import.champ8, import.champ9, round((sum(import.champ11)),2), import.champ7
  3. FROM import LEFT JOIN calendrier ON import.champ12 = calendrier.amj
  4. GROUP BY 'S'&semainet, import.champ2, champ3, champ4&' '&champ5, import.champ6, champ8, champ9, champ7
  5. HAVING max(dt_jour);


Message édité par tanaka59 le 09-10-2015 à 14:13:53
Reply

Marsh Posté le 09-10-2015 à 14:24:05    

Si tu as un trigger, et que celui-ci se déclenche sur ton update et qu'il modifie des lignes, il est normal que ça mette à jour plus de lignes que ce que tu as à la base

Reply

Marsh Posté le 09-10-2015 à 14:56:17    

Etonnement il y a X lignes de créées, X+N lignes de mise à jour et en fin de processus il ya bien ques mes X lignes dans le fichier de sortie.
 
Il est possible d'identifier les lignes impactés ? En générale je plafonne à 250 / 400 lignes sur 50 000 lignes.

Reply

Marsh Posté le 09-10-2015 à 15:16:53    

Pourquoi étonnant ?
 
Imagine tu as 100 lignes insérées sur ta table A
Mais tu un trigger (after insert) sur cette même table qui met à jour ou insère sur une table B
 
Le nombre de lignes impactées sur 100 + nb lignes modifiées/ajoutées sur B


Message édité par antac le 09-10-2015 à 15:17:06
Reply

Marsh Posté le 09-10-2015 à 22:36:04    

Merci ces explications j'y vois beaucoup plus clair ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed