Oracle
 sql >> база данни >  >> RDS >> Oracle

Ексклузивно заключване на таблица (четене) на Oracle 10g?

Ако просто искате да попречите на друга сесия да променя данните, можете да издадете

LOCK TABLE whatever
/

Това блокира други сесии да актуализират данните, но не можем да блокираме други хора да ги четат.

Обърнете внимание, че в Oracle такова заключване на таблица рядко се изисква, тъй като Oracle работи с политика на последователност при четене. Което означава, че ако изпълним заявка, която отнема петнадесет минути за изпълнение, последният върнат ред ще бъде съвместим с първия ред; с други думи, ако наборът от резултати беше сортиран в обратен ред, пак щяхме да виждаме точно същите редове.

редактиране

Ако искате да внедрите опашка (без всъщност да използвате вградена разширена функция за опашка ), след това SELECT ... FOR UPDATE е пътят. Тази конструкция позволява една сесия да избира и заключва един или повече редове. Други сесии могат да актуализират отключените редове. Имплементирането на истинска опашка обаче е доста тромаво, освен ако не използвате 11g. Само в последната версия Oracle поддържа SKIP LOCKED клауза. Научете повече .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PLS-00221:'C1' (курсор) не е процедура или е недефиниран

  2. Екран последователностите запазени ли са в CLOB?

  3. oci_connect връзката неуспешна

  4. Избирането както на MIN, така и на MAX от таблицата е по-бавно от очакваното

  5. Проблем с преобразуване на Oracle SQL DATE при използване на iBATIS чрез Java JDBC