Pokud chcete pouze zabránit jakékoli jiné relaci v úpravě dat, můžete vydat
LOCK TABLE whatever
/
Toto blokuje ostatním relacím v aktualizaci dat, ale nemůžeme blokovat další peple v jejich čtení.
Všimněte si, že v Oracle je takové zamykání tabulek vyžadováno jen zřídka, protože Oracle provozuje politiku konzistence čtení. Což znamená, že když spustíme dotaz, jehož spuštění trvá patnáct minut, poslední vrácený řádek bude konzistentní s prvním řádkem; jinými slovy, pokud by byla sada výsledků setříděna v obráceném pořadí, stále bychom viděli přesně stejné řádky.
upravit
Pokud chcete implementovat frontu (aniž byste ve skutečnosti použili Oracle vestavěná funkce Advanced Queuing
) a poté SELECT ... FOR UPDATE
je způsob, jak jít. Tato konstrukce umožňuje jedné relaci vybrat a uzamknout jeden nebo více řádků. Jiné relace mohou aktualizovat odemčené řádky. Implementace skutečné fronty je však poměrně těžkopádná, pokud nepoužíváte 11g. Pouze v nejnovější verzi Oracle podporuje SKIP LOCKED
doložka. Další informace
.