Je choisis des tables FOO et BAR. Je voudrais verrouiller les enregistrements de FOO qui sont retournés, mais je ne veux pas que les enregistrements de BAR soient verrouillés. Il semble que j'ai besoin de spécifier des colonnes individuelles, mais je veux que l'enregistrement entier de foo soit verrouillé. par exemple. Je voudrais pouvoir faire quelque chose comme:Oracle de verrouillage avec SELECT ... POUR MISE À JOUR DE
cursor c_foobar is
select foo.*, bar.* from
foo, bar
where foo.id = bar.foo_id
for update of foo
Dois-je énumérer toutes les colonnes de foo dans la section for update of
afin de les verrouiller tous? Ou puis-je arbitrairement choisir n'importe quelle colonne dans foo, même ceux qui ne sont pas sa clé primaire, et verrouiller l'ensemble de l'enregistrement?
Très bon; Je ne sais pas comment j'ai raté ça. Donc, je suppose que cela nécessite simplement un nom de colonne arbitraire de la rangée ... facile mais ne me semble pas terriblement intuitif. –
Je suis d'accord, ce n'est pas le cas. Je me rappelle avoir lu quelque part il y a longtemps que l'exigence de spécifier des colonnes est telle que, dans une future version, Oracle pourrait seulement verrouiller certaines colonnes dans la rangée. Mais ma mémoire est floue à ce sujet. –
C'est une forme de code auto-documenté, je pense: "J'ai seulement l'intention de mettre à jour la colonne" salaire "" –