[Résolu][oracle][SQL] ignoré les doublons lors d'un insert??
bonjour, je vais une requete du style:
insert into TABLE1 (col1,col2,col3) select DISTINCT col1,col2,col3 from TABLE2
mais la requete renvoie a chaque PK violation, unique constraint violated
(Table1 à une clé primaire).
Comment faire pour que ne pas inséré ses doublons (les ignoré), et continué le insert?
J'ai essayé un Exceptions INTO lors de la création de la contrainte PK, mais ça ne marche pas :-(
Passer par un curseur (pas top)
Par un curseur c'est plus lisible, mais plus long
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| DECLARE
CURSOR c IS
SELECT DISTINCT col1,col2,col3
FROM TABLE2;
BEGIN
FOR r IN c LOOP
BEGIN
INSERT INTO TABLE1 (col1,col2,col3)
VALUES (r.col1, r.col2, r.col3)
EXCEPTION
-- On catch l'erreur PK violation
WHEN DUP_VAL_ON_INDEX THEN NULL;
END;
END LOOP;
COMMIT;
END; |