sql >> Databáze >  >> RDS >> Oracle

Exkluzivní zámek tabulky (čtení) na Oracle 10g?

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 .



  1. postgres - s rekurzivním

  2. Jak zdravý je váš SQL Server? Proaktivní monitorování databáze je kritické

  3. CakePHP model s mezi daty

  4. MySql získá součet sloupce v každém řádku nového sloupce