Bonjour à tous.
Je voudrais savoir s'il existe un sorte de verrou qui permet d'interdire même la consultation d'une table via select.
Merci d'avance.
Bonjour à tous.
Je voudrais savoir s'il existe un sorte de verrou qui permet d'interdire même la consultation d'une table via select.
Merci d'avance.
Peux-tu préciser le contexte ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part revoke select on matable ?
Il s'agit d'empêcher le select sur une table de manière permanente ou temporaire ?
A qui ?
Il s'agit d'un verrou temporaire. Je voudrais bloquer l'accès à une table (pour tout le monde sauf l'utilisateur courant) pendant l'execution d'une requête et ensuite la libérer quand la reqête sera terminée.
Il n'y a pas de moyen simple d'empêcher des SELECT sur une table avec Oracle car par défaut le SELECT (sans clause FOR UPDATE) ne verrouille aucune ligne dans une table. L'instruction LOCK TABLE n'empêche pas les SELECT concurrents.
Pourquoi voulez-vous interdire des SELECT concurrents sur une table ?
J'utilise une requête qui teste si un lot de travail est libre (un lot est libre si tous les champs VERROU des lots associés à celui_ci est à 0).Pourquoi voulez-vous interdire des SELECT concurrents sur une table ?
Ensuite on attribue ce lot à l'utilisateur qui a fait le SELECT.
Le problème est que si deux utilisateurs effectuent des SELECT en même temps le lot va paraître libre aussi bien pour l'un que pour l'autre, et cela pourra causer des désordres.
gérer avec un système SELECT FOR UPDATE...s'il ne marche pas pour l'utilisateur lambda c'est qu'un premier est en train de le lire..
2 lecteurs en meme temps? nécéssairement un des 2 passera avant l'autre (au timestamp près)
si le select marche, on peut dire qu'il est pdeudo-libre.. quand la sélection (ou pas) est fait ...oracle libère la ligne avec commit ou rollback
ça pourrait pas marcher?
Partager