PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

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

#1 06/05/2019 00:44:51

Fras
Membre

Débutant: function me permettant de remplir un champs

Je voudrais réaliser une fonction qui me permette de remplir mon un champs integer avec des nombres croissants.
lorsque j'exécute la fonction ci-dessous, je n'obtiens que le nombre max de ma boucle for dans toutes mes lignes (7).
Pourriez-vous m'éclairer sur la manière que j'aurais d'attribuer à chaque ligne la valeur incrémentée de 1 de manière à obtenir ceci, ligne 1 - champs 1 => 1, ligne 2, champs 2 => 2...

Merci d'avance.

drop function modifier_valeur_id();
create or replace function modifier_valeur_id() returns void as $$
declare
    var integer;
begin
    var :=0;
    for i in 1..7
    loop   
        var = var + 1 ;
        update t_prix
        set prix_refid = var;
    end loop;
end;
$$ language plpgsql

Hors ligne

#2 06/05/2019 13:31:55

dverite
Membre

Re : Débutant: function me permettant de remplir un champs

Un UPDATE sans clause WHERE met à jour toute la table.
Donc ici toutes les lignes sont mises à jour à chaque tour de boucle, écrasant toutes les valeurs précédentes.

En base de données les lignes des tables n'ont pas de numéro intrinsèque, donc il n'y a pas de ligne 1, ligne 2, etc. sauf à les numéroter de manière complètement arbitraire. Il faudrait plutôt utiliser la clef primaire de la table pour indiquer que telle ligne doit être mise à jour avec telle valeur.

Hors ligne

#3 06/05/2019 18:08:02

Fras
Membre

Re : Débutant: function me permettant de remplir un champs

Ok merci bcp

Hors ligne

Pied de page des forums