{Oracle} Update : incrémentation sur colonne

Résolu/Fermé
TheUltimateCaveMan Messages postés 42 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 18 janvier 2014 - 24 juin 2009 à 10:31
TheUltimateCaveMan Messages postés 42 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 18 janvier 2014 - 24 juin 2009 à 16:29
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 jeudi 11 juin 2009 Statut Membre Dernière intervention 24 mars 2010 3
24 juin 2009 à 12:47
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 jeudi 24 juillet 2008 Statut Membre Dernière intervention 18 janvier 2014 1
24 juin 2009 à 14:28
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 jeudi 24 juillet 2008 Statut Membre Dernière intervention 18 janvier 2014 1
24 juin 2009 à 15:03
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 jeudi 11 juin 2009 Statut Membre Dernière intervention 24 mars 2010 3
24 juin 2009 à 15:12
0

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

Posez votre question
TheUltimateCaveMan Messages postés 42 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 18 janvier 2014 1
24 juin 2009 à 16:29
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