Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 04/04/2013 11:28:47
- Atsibat
- Membre
Problème insert sur cle composée avec auto incrément
Bonjour,
sur une table T1 j'ai les champs : "id","Origine" ,"Reference" (+ d'autres champs mais sans interêt)
la clé primaire est définie sur ces deux champs : ("Origine","id")
le champ "id" est en BIGSERIAL not null ce qui correspond si j'ai bien compris à un champ auto-incrementé
le champ "Origine" prends les valeurs 1 ou 2 ou 3 selon l'origine de l'enregistrement
mon problème est que j'ai déjà ce genre de valeurs :
id | origine | Reference
____________________
098 | 1 | 568
099 | 1 | 4455699
100 | 1 | 12365
095 | 2 | 145236
099 | 2 | 225569
quand je veux faire un insert :
INSERT INTO "T1" ("Reference","Origine") SELECT "Ref","Org" FROM "Article"
pour les valeurs (54698,1)
j'ai une erreur car Postgre me dis que la clé ("Origine","id")=(1,100) existe déjà
car il semble prendre le dernier id+1 au lieu du max(id)+1
Merci de votre aide
Hors ligne
#2 04/04/2013 11:57:00
- rjuju
- Administrateur
Re : Problème insert sur cle composée avec auto incrément
Bonjour,
un champ serial va créer une sequence associée au champ. Je suppose que la séquence a été modifiée manuellement, ou que des enregistrements ont été créés avec la valeur id spécifiée, sinon la séquence ne serait pas désycnrhonisée avec la réalité.
De plus, il est étrange de faire une clé primaire sur un champ auto-incrémenté (dont toutes les valeurs sont sensées être différentes) ainsi qu'une seconde colonne.
Julien.
https://rjuju.github.io/
Hors ligne
#3 05/04/2013 10:04:20
- Atsibat
- Membre
Re : Problème insert sur cle composée avec auto incrément
Bonjour,
merci pour la réponse problème résolu en modifiant manuellement la mémorisée dans la séquence.
Je ne sais pas trop pourquoi elle était décallée... ?
merci
Hors ligne