Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/10/2006, 11h15   #1
Membre régulier
 
Homme
Développeur informatique
Inscription : mai 2002
Messages : 222
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mai 2002
Messages : 222
Points : 90
Points : 90
Envoyer un message via Skype™ à Lovmy
Par défaut Mise a jour de l'index de cle primaire

Bonjour,

Je suis sous DB2 7.2.4

J'ai une table TOTO, avec un champs autoincrement aa et un champs varchar bb ( par exemple )

Je faire 2 INSERT, j'ai donc par exemple

aa bb
[1] [test]
[2] [bobo]

La on fait des inserts en forcant le champs aa ( lors d'une recuperation d'un backup par exemple )

j'ai donc

aa bb
[1] [test]
[2] [bobo]
[4] [test2] <- on a force le champs aa a 4
[5] [bobo2] <- on a force le champs aa a 5

Si a ce point je refait un insert sans preciser le champs aa, j'aurais
aa bb
[1] [test]
[2] [bobo]
[3] [nouveau] <- mon nouvelle enregistrement
[4] [test2]
[5] [bobo2]

Et donc arrive a ce point si je refait un insert sans preciser aa, j'ai une erreur car il essai d'inserer un enregistrement avec aa = 4, enregistrement qui existe deja.

Donc ma question, est-il possible par une commande DB2 de lui indiquer que le prochain enregistrement doit avoir le champs autoincrement 6 et non a 4 ?

Merci par avance pour vos reponses !
Lovmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 13h24   #2
jab
Rédacteur
 
Avatar de jab
 
Homme Jean-Alain Baeyens
SharePoint developpeur
Inscription : février 2004
Messages : 1 172
Détails du profil
Informations personnelles :
Nom : Homme Jean-Alain Baeyens
Âge : 48
Localisation : Belgique

Informations professionnelles :
Activité : SharePoint developpeur
Secteur : Service public

Informations forums :
Inscription : février 2004
Messages : 1 172
Points : 3 131
Points : 3 131
Envoyer un message via ICQ à jab Envoyer un message via MSN à jab Envoyer un message via Skype™ à jab
S'il recommence à un c'est que la table a été recréé. Dans ce cas, il semble judicieux lors de la création de définir comme valeur initiale de l'autoincrément une valeur supérieure à la plus grande valeur du backup que tu comptes intégrer dans la table.
jab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 21h15   #3
Membre régulier
 
Homme
Développeur informatique
Inscription : mai 2002
Messages : 222
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mai 2002
Messages : 222
Points : 90
Points : 90
Envoyer un message via Skype™ à Lovmy
Par défaut Solutiuon de depannage

Re,

C'est un exemple, dans mon cas j'ai deja des enregistrements dans la table.

Comme je suis sous version 7, je n'ai pas acces au ALTER table ALTER colonne RESTART WITH MAX(champs auto increment)+1

Si je fait des INSERT j'ai une erreur mais.... DB2 incremente quand meme son compteur de cle auto-increment donc:

Dans mon exemple j'ai

aa bb
[1] [test]
[2] [bobo]
[3] [nouveau]
[4] [test2]
[5] [bobo2]

Avec me cle auto-increment a 4, si je refait un insert j'aurais une erreur, mais DB2 incrementera son compteur, je suis donc a 5, je refais un insert, je suis maintenant a 6 et la si je refais un INSERT ca marche, il me cree un enregistrement avec aa=6.

C'est la seule solution que j'ai trouve sous version 7, l'autre etant de sauvegarder la table, de la dropper, de la recreer en precisant la valeur du champs auto-increment de depart, et de la reremplir en y inserant les enregistrements sauve dont l'id est inferieur a celui preciser lors de la recreation de la table.

Voila, @++
Lovmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h15.


 
 
 
 
Partenaires

Hébergement Web