Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Złożony wyzwalacz Oracle (11g) nie aktualizuje pola danych CLOB

Nie mając czasu na zatrzymywanie się nad tym problemem, rozwiązałem go, korzystając ze zmiennej.

Zadeklarowanie zmiennej CLOB w sekcji deklaracji i przypisanie do niej wartości :new.clob_field albo w PRZED KAŻDYM WIERSZEM, albo PO KAŻDYM WIERSZENIU i użycie zmiennej w instrukcji insert/update zamiast :new.clob_field w wyzwalaczu rozwiązuje ten problem.

Natknąłem się na wiele postów ludzi walczących z tym (szczególnie wyzwalacze złożone, a nie proste wyzwalacze), więc mam nadzieję, że czas, który poświęciłem temu, pomoże komuś innemu i zaoszczędzi mu czas.

Byłoby naprawdę pomocne dla mojego zdrowia psychicznego, gdyby ktoś natknął się na ten post, który zna powód, dla którego :new.clob_field traci swoją wartość w wyzwalaczu złożonym, gdy jest używany w instrukcjach wstawiania/aktualizacji w sekcji PRZED/PO każdym wierszu. Strasznie byłoby kiedyś umrzeć z tą myślą, która utkwiła mi w głowie...

Przyjmę również założenie, że to zadziała również w przypadku BLOB (jeśli powoduje to problem).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tworzenie sekwencji dla pola varchar2 w Oracle

  2. Oracle :wybierz maksymalną wartość z różnych kolumn tego samego wiersza

  3. Tworzenie tabeli za pomocą wiersza poleceń SQL, nieprawidłowy identyfikator

  4. Dlaczego nie mogę rzucić Oracle BLOB z natywnego Javy Blob

  5. Wyrocznia i paginacja