|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mai 2010 Messages : 9 ![]() |
Bonjour
je travaille sur oracle 10g mon application est installé sur un serveur, et j'ai plusieurs utilistaurs qui sont connectés. lorsque j'ajoute un enregistrement avec la technique code=maxvalue ,il se peut que deux utilisateurs aient la même valeur ,ce qui pose un problème de clé primaire, j'ai essayé avec la séquence je trouve que je perds quelques numéro lorsque j'annule la tâche. merci de me proposer une solution |
|
|
00
|
|
|
#2 | ||
|
Membre confirmé
![]() |
Hello,
Si c'est un problème pour toi de perdre quelques numéros, alors tu peux t'en sortir en créant une table (avec storage keep) qui contiendra une ou plusieurs lignes du style Code :
Tu pourra faire un select for update pour incrémenter ta clé. C'est une idée... jko
__________________
OCA-OCP 11g, SQL and Performance & Tuning Expert 11g Data Guard 11g, ASM & Grid Control 11g, Apex |
||
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : mai 2010 Messages : 9 ![]() |
merci c'est pas mal
mais est ce que je peux récupérer les valeurs perdues par la séquence |
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Le problème ne serait-il pas pris à l'envers ? Certes, tu peux avoir un besoin particulier qui impose de ne pas avoir de trou, mais généralement, ce qui compte c'est de justifier ces trous rien de plus. Tu pourrais donc très bien ajouté une colonne à la table proposée par jkofr pour justifier le non usage d'une clé.
Parce qu'avoir une séquence sans trou c'est surement possible mais en contrepartie tu vas devoir développer une usine à gaz pour réutiliser les numéros (genre max(Key_ID) WHERE status = 'FREE' ou UPDATE tab_seq SET ID = ID + 1) libres et ça va coûter en perf Pour info : http://asktom.oracle.com/pls/asktom/...:4343369880986 |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : mai 2010 Messages : 9 ![]() |
merci infiniment
|
|
|
00
|
|
|
#6 | |
|
Membre expérimenté
![]() Mohamed HouriInscription : mars 2010 Messages : 286 ![]() |
Citation:
Mon conseil, est (a) d'utiliser cette séquence Oracle dans votre trigger (b) d'accepter les trous dans votre clé primaire. En effet, c'est beaucoup plus sûr et moins contraignant dans un environnement concurrent comme le votre d'opter pour les point (a) et (b) plutôt que de se laisser embarqué dans des complications qui au mieux ne feront que sérialiser vos inserts. Bien à vous Mohamed Houri |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com