3 votes

Pourquoi la contrainte unique est-elle violée lors de l'insertion ?

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X