2010-03-16 7 views
2

J'utilise une insertion dans l'instruction select from pour insérer le jeu de résultats d'une requête dans une table contenant une colonne d'identité. Je reçois systématiquement une erreur Impossible d'insérer une ligne de clé en double dans l'objet 'dbo.TABLE1' avec l'index unique 'IX_TABLE1'.insert dans select from dans une table avec une colonne d'identité

S'il vous plaît aider

Répondre

0

L'instruction select que vous utilisez sont la récupération des lignes qui ont des valeurs en double qui, lorsqu'ils sont insérés dans votre table, les feux de votre contrainte.

Vous pouvez valider le nom de la colonne via l'index unique auquel les données sont insérées. Une fois que vous obtenez la colonne, essayez de vérifier dans votre déclaration select à quelle colonne est mappée et vérifiez les enregistrements en double. Bien que vous puissiez avoir une colonne d'identité, votre table pour l'insertion contient toujours des contraintes qui se lient à une autre colonne, ce qui empêche les enregistrements en double.

2

Pour utiliser MSSQL WHERE NOT EXISTS

INSERT INTO tbl1 (keycol, col1, col2) 
SELECT keycol, col1, col2 
FROM tbl2 
WHERE NOT EXISTS 
(SELECT 1 
FROM tbl1 
WHERE tbl1.keycol = tbl2.keycol); 

Pour MySQL utiliser INSERT IGNORE

INSERT IGNORE INTO table 
SELECT x, y, z 
FROM table2 
WHERE a=b 

ce qui va sauter toute erreur de clé en double et il suffit d'insérer les lignes qui ne heurtent pas les clés existantes primaires/uniques.

0

Toute cette erreur signifie que vous essayez d'insérer une valeur qui existe déjà dans la table. Si vous fournissez plus d'informations je peux essayer et aider, mais vous n'avez pas donné beaucoup d'informations.

Questions connexes