Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 22/08/2014 13:12:04
- Thomas Williamson
- Membre
UPDATE sur une nouvelle ligne
Bonjour,
J'ai mis en place une règle pour mettre à jour une colonne NUM à partir d'une colonne CODE lors de l'insertion d'une nouvelle ligne (si CODE = 159990099, j'extrais NUM = 99) :
CREATE OR REPLACE RULE _insert_num AS ON INSERT TO maTable DO UPDATE maTable SET num = ltrim("substring"(code, 6, 4), '0') ;
Ainsi, à l'insertion d'une nouvelle ligne, l'UPDATE remet à jour la colonne NUM pour tous les enregistrements alors qu'il suffirait qu'il ne tourne que sur la ligne insérée. Je ne trouve pas de moyen de spécifier ça dans la règle...
Merci pour votre aide,
Thomas
Hors ligne
#2 22/08/2014 15:58:08
- rjuju
- Administrateur
Re : UPDATE sur une nouvelle ligne
Bonjour,
C'est normal, vous exécutez un UPDATE de toute la table sans prédicat. Pour vous simplifier la vie, il faudrait utiliser un trigger. Si vous voulez vraiment utiliser une règle, faites plutôt un DO INSTEAD voir http://docs.postgresql.fr/9.3/rules-update.html
Julien.
https://rjuju.github.io/
Hors ligne
#3 16/09/2014 14:27:35
- irag12
- Membre
Re : UPDATE sur une nouvelle ligne
Effectivement quand je fait un iotop sur le maitre je remarque qu'il y'a trop de lecture sur le disque et c'est les requêtes que je lance avec jmeter à partir de pgpool qui font ces lectures là pourtant je ne vois aucune requête select passer par pgpool on regardant les logs de ce dernier c'est ce que je trouve étrange.
irag
Hors ligne
Pages : 1