Bonjour,

je vous explique ma problématique : j'ai une table "FOMASS_DATA" avec deux colonnes old_act_id et new_act_id. Le old_act_id n'est pas unique (la clé primaire se fait avec une autre colonne). Je voudrais en un seul Update assigné le même new_act_id (avec une séquence) pour les old_act_id identique, j'ai réussi à le faire en PL/SQL mais est-ce c'est possible en SQL ?

PL/SQL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
declare
  block_seq NUMBER;
  cursor curs is select old_act_id from fomass_data group by old_act_id;
begin
  for old_act_id_u in curs
  loop
     select cfl_s_act_id.nextval into block_seq from dual;
     update fomass_data set new_act_id=block_seq where old_act_id=old_act_id_u.old_act_id;
  end loop;
end;
/
J'ai déjà tenté quelque chose en SQL mais ça ne fonctionne pas, la séquence augmente pour chaque ligne updatée... :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
update fomass_data
set new_act_id=cfl_s_act_id.nextval
where old_act_id in(
                    select old_act_id
                    from fomass_data
                    group by old_act_id);
Merci d'avance pour votre aide !