{Oracle} Update : incrémentation sur colonne

Résolu
TheUltimateCaveMan Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   -  
TheUltimateCaveMan Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai une table qui a certains enregistrements :

NUM--A--B--C--D-----code

___---a--b--c--d------toto
___---a1-b1-c1-d1---toto
....

la colonne "NUM" est toujours vide.
Je voudrais faire cela :

NUM--A--B--C--D-----code

1___--a--b--c--d------toto
2___--a1-b1-c1-d1----toto
...

Je veux faire cela pour tout les enregistrements qui ont un code=toto car je sais qu'ils n'auront pas de "NUM".
De plus je veux que la colonne "NUM" garder l'ordre des lignes (ligne 1=1 etc) et pas mettre des numeros aléatoires.
Peut-être un trigger ou une procédure, le fait est que si j'incrémente avec un trigger, qui fait +1 à chaque enregistrement, il viendra un moment où le champ sera trop petit pour le nombre qui sera énorme et en plus il le fera pour tout les enregistrements et pas pour les enregistrements de code=toto.

Auriez-vous des suggestions ou des idées ?

Merci
A voir également:

5 réponses

0866 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   3
 
il faut ajouter dans le tigger/procedure une condition qui vérifie le nom enregistrer dans le code avant de faire l'incrémentation.
0
TheUltimateCaveMan Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour,

Merci.
Au final j'ai fait un trigger qui marche lorsque je fais des "insert" mais qui fait bugger SQL*Loader puisque ce dernier m'informe :

SQL*Loader-704: Internal error: ulnain: error occurred on good insert [-1]
SQL*Loader-2026: the load was aborted because SQL Loader cannot continue.

Je suis en train de chercher ce que cela veut dire mais si quelqu'un a la réponse...

Merci

0
TheUltimateCaveMan Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   1
 
Sinon l'autre idée est que j'enléve le trigger, je charge mes données via SQLLoader puis je lance une procédure que j'aurais créée qui, via un curseur qui parcoura tout les enregistrements pour un certain "code" mettra à jour la colonne "NUM" en prenant le dernier "NUM" et en faisant +1.
Il faut juste que je me remémore (google) comment faire une procédure et des curseurs.
Si vous avez des idées...

Merci

0
0866 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   3
 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TheUltimateCaveMan Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   1
 
Salut
Merci pour tout.
Finallement le probléme à été résolue en faisant une séquence dans le loader.
La syntaxe :

...
NUM "Nom_Sequence.nextval",
...

(séquence créée dans la base où je loade)

a+
0