Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#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.
@DanielVerite
http://blog-postgresql.verite.pro/
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