[plpgsql -- nested function] problème de verrous
Bonjour,
J'ai deux fonctions :
alimentation() et alimentation(my_insee character varying).
La première est définit ainsi :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
CREATE OR REPLACE FUNCTION alimentation() RETURNS void AS
$BODY$
DECLARE
commune_en_cours nav_commune%ROWTYPE;
BEGIN
FOR commune_en_cours IN (SELECT * FROM nav_commune) LOOP
PERFORM alimentation(commune_en_cours.insee);
END LOOP;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION alimentation() OWNER TO "schema"; |
Lorsque je lance ma fonction générale (sans paramètre) cela engendre la création automatique d'un nombre conséquent de verrous.
Lorsque ma table nav_commune contient beaucoup de champs, j'obtiens un message d'erreur m'indiquant que je dépasse le nombre de verrous autorisés.
Bien sûr je pourrais modifier la valeur de max_locks_per_transaction mais c'est peu générique.
De ce fait mes questions sont les suivantes :
Pourquoi cette méthode -une fonction globale qui appelle une sous fonction paramétrée pour différentes valeurs du paramètre- engendre-t-elle toutes ces créations de verrous ?
Quelle méthode employer pour corriger ce problème, ou comment interdire la création de verrous ?
note : en effet, je garantis que cette fonction ne sera pas en concurence avec d'autres appels pour les tables considérées et donc les verrous ne me sont pas nécessaire...
Merci. Cordialement,