Bonjour,
Je doit modifier des codes d'une table (à priori rien de très compliqué quoi)
Je veut gardé mon ancienne table pour pouvoir continué à bossé cas d'erreur. Et surtout évité les doublons (de toute façon au vue des contraintes de mes tables les doublons ne sont pas possible

)
Tout les codes ne sont pas à remplacés et certaines lignes sont amené à disparaitre (certain nouveau code existe déjà dans la liste des anciens codes, les données sont réunie ensuite en quelque sorte)
J'ai déjà alimenté ma nouvelle table avec tout les code à remplacé.
Pas de problème sur ce point sa à bien fonctionné.
Je post quand même la requete :
---------------------------------------------------------------------------------------------------
INSERT INTO "ART_PLANIPE_TRANSCODE"(
"CODE_DÉPÔT", "CODE_ARTICLE","CODE_ARTICLE_OLD")
select
a."CODE_DÉPÔT" as "CODE_DÉPÔT",
b."NOUVEL ARTICLE CABN ou CABS" as "CODE_ARTICLE",
a."CODE_ARTICLE" as "CODE_ARTICLE_OLD"
FROM
"ART_PLANIPE" a,
"Transcodification_CAB_CABN_CABS" b
WHERE
a."CODE_ARTICLE" = b."ARTICLE CAB"
UNION
select
a."CODE_DÉPÔT" as "CODE_DÉPÔT",
b."NouvelArticle" as "CODE_ARTICLE",
a."CODE_ARTICLE" as "CODE_ARTICLE_OLD"
FROM
"ART_PLANIPE" a,
"Transcodification_TEE_MER_SCH" b
WHERE
a."CODE_ARTICLE" = b."AncienneArticle"---------------------------------------------------------------------------------------------------
Maintenant j'ai donc la liste de tout les code qui sont à remplacé. Maintenant je voudrais alimenté le reste.
Je fait donc cette requete :
---------------------------------------------------------------------------------------------------
INSERT INTO "ART_PLANIPE_TRANSCODE"("CODE_DÉPÔT", "CODE_ARTICLE","CODE_ARTICLE_OLD")
SELECT
a."CODE_DÉPÔT",
a."CODE_ARTICLE",
''::text as "CODE_ARTICLE_OLD"
FROM
"ART_PLANIPE" a,
"ART_PLANIPE_TRANSCODE" b
WHERE
a."CODE_ARTICLE" not in (select "CODE_ARTICLE_OLD" from "ART_PLANIPE_TRANSCODE")
AND
(a."CODE_DÉPÔT", a."CODE_ARTICLE") not in (select "CODE_DÉPÔT","CODE_ARTICLE" from "ART_PLANIPE_TRANSCODE")---------------------------------------------------------------------------------------------------
Et la hooooooooo surprise mon sgbd (PostgreSQL) me renvoie :
ERREUR: la valeur d'une clé dupliquée rompt la contrainte unique « KEY_ART_PLANIPE_TRANSCODE »
???
Ce n'est en principe pas possible au vue de ma requete vue que j'exclus toute les données déjà présente dans mon WHERE ???
J'ai déjà une solution pour quand même pouvoir faire ce que je veut (une troisième table alimenté par requete UNION, ce qui évite les doublons, et sa sera plus rapide à exécuté en plus

)
Mais je voudrais comprendre ou ce trouve mon erreur car la vraiment je ne comprend pas ????Merci d'avance
Amicalement 
1 000 Recherche sur Google = 1Km en voiture de CO²
1 000 Recherche sur Forestle = 100 m² de foret tropicale sauvé
Surfé écolo 