Kategorie szkoleń | Egzaminy | Kontakt
  • 2
  • 2
  • 165

Pytanie jak w temacie. Do zakończenia transakcji?

Co się stanie, gdyby ktoś użył tej instrukcji i o niej zapomniał?

Nie bardzo rozumiem sens stosowania takiej instrukcji w zapytaniu typu select.

Piotr_Jaworski1
  • Zapytał
  • @ Piotr_Jaworski1 | 19.03.2014
    • 4
    • 2
    • 5

Odpowiedzi (2)

  • 5

Klauzula FOR UPDATE stosowana jest w celu zablokowania pojedynczych rekordów w tabeli. Blokada taka trwać będzie do końca transakcji tj. do czasu wykonania polecenia commit, rollback lub dowolnego polecenia DDL i uniemożliwia modyfikację zawartości zablokowanych wierszy przez inne transakcje. Blokada taka tworzona jest, by zapewnić nam spójność danych w transakcji, np. gdy wprowadzamy rekordy potomne (podpięte za pomocą klucza obcego do tabeli nadrzędnej) i chcemy mieć pewność, że nadrzędny "rekord-rodzic" nie zostanie w międzyczasie usunięty.


  • Odpowiedział
  • @ | 31.03.2014
  • TRENER MODERATOR ALTKOM AKADEMII
Komentarze
Powyższa odpowiedź jest poprawna o ile isolation lavel połączenia bierze pod uwagę niezatwierdzone transakcje.
Skomentował : @ Marcin_Dębicki_ukpd ,17.09.2018
  • 0
  • 0
  • 0
  • 2

Jako DBA bardzo nie lubimy jak to polecenie jest wykonywane bez uzasadnienia na wszystkich rekordach tabeli np. profilaktycznie, łamiemy tym samym zasadę Oracle gdzie blokady domyślnie są zakładane na poziomie rekordu.

  • Odpowiedział
  • @ | 16.10.2014
  • TRENER MODERATOR ALTKOM AKADEMII