Bonjour,
on me pose une bonne question : peut-on faire un lock sur une séquence ?
Sur une table OK, mais sur les autres objets en général ?
@+,
NicK.
Bonjour,
on me pose une bonne question : peut-on faire un lock sur une séquence ?
Sur une table OK, mais sur les autres objets en général ?
@+,
NicK.
Tous les objets tables, séquences, index sont verrouillés en mode partagé dès qu'ils sont utilisés par une requête pour éviter que leur structure soit modifiée alors que l'objet est en cours d'utilisation.
Je ne crois pas que verrouiller la valeur retournée par une séquence soit possible. Cela n'aurait d'ailleurs pas de sens puisqu'une des raisons d'être des séquences est d'éviter la sérialisation par verrouillage des données pour générer des valeurs uniques à utiliser comme clés primaires ...
Ceci dit, il est possible d'utiliser le package DBMS_LOCK qui permet d'utiliser certains services de verrouillage d'Oracle si les mécanismes standard ne suffisent pas.
Les mécanismes de verrouillage sur les objets et les lignes dans les tables sont détaillés dans le Concepts Guide: http://download-uk.oracle.com/docs/c...htm#sthref2026
Si quelqu'un a un exemple d'utilisation, ce serait sympa car je n'ai jamais utilisé ce package. Merci.
@+,
NicK.
Il y a un petit exemple en COBOL dans la doc Oracle:
http://download-uk.oracle.com/docs/c...ns_sqlproc.htm
il faudrait nous en dire un peu plus sur ce que tu souhaites faireEnvoyé par Nick_Holmes
Ce n'est pas moi mais un développeur (fou bien sur...).
Il voulait récupérer une plage continue de valeurs d'une séquence pour l'utiliser dans son code JAVA. D'où le bloquage de la séquence pendant son utilisation puis le relâchement de celle-ci. Je préfère qu'il insère ligne à ligne même si c'est moins rapide.
@+,
NicK.
Mouai , ca me parait bien compliqué ,
Soit il fait de l'insertion ligne par ligne soit il se crée lui même sa séquence , stocké dans une table par exemple , soit tu le TUE
il faudrait mettre en place le despistage de produits illicites dans tes équipes de dévEnvoyé par Nick_Holmes
![]()
Il faudrait virer la moitié de l'équipe :pEnvoyé par Fred_D
Bon, on va faire autrement car c'est de la bidouille sinon.
@+,
NicK.
C'est de la bidouille et tu as en plus toutes les chances de plomber les perfs de ton appliEnvoyé par Nick_Holmes
Bonjour,
J'ai déjà rencontré ce pb dans le cas où on a besoin de réserver une plage de valeur d'une séquence. Le risque avec la séquence est que lorsqu'on l'incrémente pour réserver la plage, rien ne garantit qu'un autre traitement ne va pas faire un nextval.
La solution qu'on a utilisée est effectivement de faire une table-séquence avec une fonction qui renvoie la prochaine valeur et une fonction qui réserve la plage, toutes deux en pragma autonomous.
Laly.
Salut,
Exactement ce que je disais à mes développeurs.Envoyé par lalystar
pas bête... mais le choix technique est de ne pas faire de PL/SQL ...Envoyé par lalystar
moins de boulot pour moimais limitations pour les dév.
![]()
Merci pour tes réponses constructives.
@+,
NicK.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager