Jeśli chcesz tylko uniemożliwić innym sesjom modyfikowanie danych, które możesz wydać
LOCK TABLE whatever
/
To blokuje innym sesjom aktualizację danych, ale nie możemy zablokować innym osobom ich odczytu.
Należy zauważyć, że w Oracle takie blokowanie tabel jest rzadko wymagane, ponieważ Oracle stosuje politykę spójności odczytu. Co oznacza, że jeśli uruchomimy zapytanie, którego uruchomienie zajmuje piętnaście minut, ostatni zwrócony wiersz będzie zgodny z pierwszym wierszem; innymi słowy, gdyby zestaw wyników został posortowany w odwrotnej kolejności, nadal zobaczylibyśmy dokładnie te same wiersze.
edytuj
Jeśli chcesz zaimplementować kolejkę (bez faktycznego korzystania z wbudowana funkcja zaawansowanego kolejkowania
) następnie SELECT ... FOR UPDATE
jest droga do zrobienia. Ta konstrukcja pozwala jednej sesji wybrać i zablokować jeden lub więcej wierszy. Inne sesje mogą aktualizować odblokowane wiersze. Jednak wdrożenie prawdziwej kolejki jest dość kłopotliwe, chyba że używasz 11g. Tylko w najnowszej wersji Oracle obsługuje SKIP LOCKED
klauzula. Dowiedz się więcej
.