0
votes

Comment insérer plusieurs instructions d'insertion SQL

Il y a une personne de table (identifiant, nom). J'insère plus de 1000 records dans la table des personnes. Les deux identifiant et le nom doivent être uniques. J'ai écrit quelque chose comme ça xxx

Je reçois une contrainte unique pour le nom dans cette requête. Comment savoir quel enregistrement en particulier échoue. Tout ce que je vois dans les journaux est celui-ci

erreur de départ à la ligne: 3 dans la commande - ORA-00001: contrainte unique (UN_PERSON_NAME) violé.

Cela ne dit pas l'enregistrement exact qui est en double.


2 commentaires

Tout à fait confondre avec insérer tout puis sélectionnez *, si vous voulez vraiment savoir quelle ligne ont un problème, mieux les diviser en ligne séparée.


Premièrement, insérez la table TEMP (TEMP_PERSON) sans contraintes uniques, puis groupe par nom pour voir quel nom est dupliqué


3 Réponses :


2
votes

vous manquez valeurs code> mot-clé. Essayez cela!

INSERT ALL 
       INTO PERSON values(1, 'MAYUR')
       INTO PERSON values(2, 'SALUNKE') 
       .....(1000 records)
SELECT * FROM DUAL;    


0 commentaires

-1
votes
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1

2 commentaires

Bien que cette réponse soit utile, il est conseillé de donner une explication appropriée sur ce que le problème est et comment vous avez résolu


Si vous souhaitez insérer des données d'une table à une autre table, utilisez cette requête pour insérer des données. Mais vous avez la même longueur de colonne dans Sélectionner et insérer une instruction



-1
votes

Malheureusement, Oracle ne prend pas en charge plusieurs inserts à l'aide d'une seule valeur () code> instruction. J'approche habituellement cela comme suit: xxx pré> p> Un avantage de cette approche est que vous pouvez utiliser une sous-requête et attribuer l'ID: P>

INSERT PERSON (id, name)
    SELECT rownum, x.name
    FROM (SELECT 'MAYUR' FROM DUAL UNION ALL
          SELECT 'SALUNKE' FROM DUAL UNION ALL 
          .....
         ) x


0 commentaires