Czy istnieje sposób, aby sprawdzić, czy wiersz został zablokowany do aktualizacji w Oracle?Jak sprawdzić, czy wiersz jest zablokowany do aktualizacji?
Jako przykład, załóżmy następujące zapytanie, wykonywaną przez jednego użytkownika:
select * from SOME_TABLE where THE_ID = 1000 for update;
z innym użytkownikiem Chcę sprawdzić, jeśli wiersz z THE_ID = 1000
jest zablokowana. Jeśli spróbuję aktualizacji lub czegoś, co drugi użytkownik zostanie zablokowany i nadal czeka (nie chcę tego).
Próbowałem również uruchomione następujące kwerendy z drugim użytkownikiem:
select * from SOME_TABLE where THE_ID = 1000 for update NOWAIT;
Ponieważ nie mogę umieścić dwa zamki w tym samym rzędzie będzie to niepowodzeniem. I tak. Otrzymuję "ORA-00054: zasób zajęty i pozyskany z określonym błędem NOWAIT". Czy zawsze mogę liczyć na ten błąd, aby sprawdzić obecność blokady lub czy istnieje prostszy i bardziej przejrzysty sposób określania, czy wiersz jest zablokowany?
Dziękujemy!
powinieneś otrzymasz ten błąd "ORA-00054: zasoby zajęte i nabyte z NOWAIT określona" - czy jesteś pewien, że twój użytkownik może zobaczyć tabelę? – SeriousCallersOnly
@ SeriousCallersOnly: Dzięki, rzeczywiście mam "ORA-00054: zasób zajęty i pozyskany z błędem określonym przez NOWAIT". ORA-00942 został rzucony przez kolejną warstwę mojej aplikacji. Przepraszam za to. Będę edytować pytanie. –