Vous n'êtes pas identifié(e).

#1 22/08/2014 13:12:04

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

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

Pied de page des forums