|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : novembre 2003 Messages : 125 ![]() |
Bonjour,
Une question concernant le gestion d'une ligne existante lors d'un INSERT. Je vois deux méthodes: -soit faire un SELECT avant l'INSERT pour tester si la ligne existe déjà. Si c'est le cas, on ne fait pas d'INSERT. -soit faire l'INSERT en recevant un ORA-00001 (violation de contrainte) en retour. Dans ce cas, on ignore l'erreur et on fait un rollback. Quelle est la méthode recommandée ? La plus performante ? Merci. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 1 497 ![]() |
Regarde la commande MERGE
__________________
La théorie, c'est quand on sait tout mais que rien ne fonctionne. La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi ! Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/ |
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : août 2005 Messages : 270 ![]() |
Le merge est de plus une solution interessante si tu doit faire un update si la ligne existe.
Sinon, la réponse est : tu tente l'insert, s'il plante, tu trappe l'exception. En faisant cela, tu n'as qu'un acces SQL, si tu fait un select, puis un insert, tu as 2 acces à chaque insertion réussi. C'est probablement un peu moins cher que le merge, mais probablement de façon négligeable. |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 459 ![]() |
Pas de rollback sur un insert qui plante.
Le rollback c'est pour les insert qui passent mais qu'on n'a pas encore commités.
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : novembre 2003 Messages : 125 ![]() |
Merci à tous pour vos réponses!
J'avais complètement oublié le MERGE que j'avais pourtant étudié à la fac! |
|
|
00
|
|
|
#6 | |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 320 ![]() |
Citation:
Les désavantagés sont :
|
|
|
|
00
|
|
|
#7 | ||
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
et pourquoi pas un
Code :
|
||
|
|
00
|
|
|
#8 | |||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 320 ![]() |
Citation:
|
|||
|
|
00
|
|
|
#9 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
certes... c'est juste plus clair dans la lecture il me semble
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com