Vous n'êtes pas identifié(e).

#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.

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

Pied de page des forums