J'insère des données dans une table en les sélectionnant dans une autre table qui peut contenir des doublons. Je pensais que ma requête traitait ce problème en vérifiant si la ligne existait déjà, mais j'obtiens une violation de la contrainte unique.
Voici la requête :
INSERT INTO FOLDER_USER (FOLDER_ID, USER_ID)
SELECT DECODE(FOLDERID,'F10', '1','F565','2','F11', '3','F81', '4','0'), USERID
FROM DATA1.FOLDERS F1
WHERE UPPER(OWNER) = 'ADMIN'
AND NOT EXISTS
(SELECT 1 FROM FOLDER_USER F2
WHERE DECODE(FOLDERID,'F10', '1','F565','2','F11', '3','F81', '4','0')= F2.FOLDER_ID
AND F1.USERID = F2.USER_ID);
- La table FOLDER_USER contient 2 colonnes FOLDER_ID (nombre), USER_ID (varchar) et combinées, elles constituent la clé primaire
- La table FOLDERS contient deux colonnes, FOLDERID et USERID (toutes deux des métacaractères). La valeur dans FOLDERID doit être décodée en un nombre dépendant de sa valeur avant d'être insérée dans la nouvelle table