Vous n'êtes pas identifié(e).
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
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
Ok merci bcp
Hors ligne