Insert ??
Fermé
bouhmid86
Messages postés
21
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
26 février 2011
-
26 nov. 2009 à 00:28
fiu - 26 nov. 2009 à 00:54
fiu - 26 nov. 2009 à 00:54
1 réponse
Salut
le curseur est géré manuellement quand on a besoin d'intervenir dessus.
Mais si le résultat d'une requête peut être envoyé directement dans une table, pourquoi s'en priver
donc si tu as
1. EMP(EMPNO, SAL, COMM, DEPTNO)
2. EMPLOYE(EMPNO, SAL, COMM)
et que tu fasses INSERT INTO EMPLOYE SELECT EMPNO, SAL, COMM FROM EMP
1. la base va construire un curseur interne (EMPNO, SAL, COMM) avec autant de lignes qu'il y en a dans EMP
2. il va, en une transaction, chercher à insérer toutes ces lignes dans EMPLOYE. Comme les types des colonnes sont certainement en correspondance, il n'y aura pas de souci (un peu comme si tu faisais un copier/coller d'une région d'une feuille de calcul dans une autre feuille). Par contre s'il y a des contraintes sur EMPLOYE et que certaines données du curseur ne respectent pas les contraintes, alors l'intégralité du curseur sera refusée. Si le but est (dans ce cas) d'en récupérer un maximum, alors là on travaille avec un curseur explicite et on commit chaque insertion
le curseur est géré manuellement quand on a besoin d'intervenir dessus.
Mais si le résultat d'une requête peut être envoyé directement dans une table, pourquoi s'en priver
donc si tu as
1. EMP(EMPNO, SAL, COMM, DEPTNO)
2. EMPLOYE(EMPNO, SAL, COMM)
et que tu fasses INSERT INTO EMPLOYE SELECT EMPNO, SAL, COMM FROM EMP
1. la base va construire un curseur interne (EMPNO, SAL, COMM) avec autant de lignes qu'il y en a dans EMP
2. il va, en une transaction, chercher à insérer toutes ces lignes dans EMPLOYE. Comme les types des colonnes sont certainement en correspondance, il n'y aura pas de souci (un peu comme si tu faisais un copier/coller d'une région d'une feuille de calcul dans une autre feuille). Par contre s'il y a des contraintes sur EMPLOYE et que certaines données du curseur ne respectent pas les contraintes, alors l'intégralité du curseur sera refusée. Si le but est (dans ce cas) d'en récupérer un maximum, alors là on travaille avec un curseur explicite et on commit chaque insertion