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

Oracle — wyzwalacze do tworzenia wiersza historii podczas aktualizacji

Dobra, to jest przepisanie. To, czego przegapiłem, kiedy po raz pierwszy odpowiedziałem, to to, że aplikacja przechowuje swoją historię w głównej tabeli. Teraz rozumiem, dlaczego @NickCraver tak przeprasza za kod.

Cóż, pierwszą rzeczą do zrobienia jest wytropienie sprawców tego projektu i upewnienie się, że nigdy więcej tego nie zrobią. Przechowywanie historii w ten sposób nie skaluje się, sprawia, że ​​zwykłe (niehistoryczne) zapytania są bardziej skomplikowane i sabotuje integralność relacyjną. Oczywiście są scenariusze, w których nic z tego nie ma znaczenia, a być może Twoja witryna jest jedną z nich, ale ogólnie jest to bardzo zła implementacja.

Najlepszym sposobem na to jest Oracle 11g Total Recall . Jest to eleganckie rozwiązanie, z całkowicie niewidoczną i wydajną implementacją oraz – jak na standardy innych płatnych dodatków Oracle – w dość przystępnej cenie.

Ale jeśli Total Recall nie wchodzi w rachubę i naprawdę musisz to zrobić, nie zezwalaj na aktualizacje . Zmiana w istniejącym rekordzie CONTACT powinna być wstawką. Aby to zadziałało, może być konieczne zbudowanie widoku z wyzwalaczem INSTEAD OF. Wciąż jest okropne, ale nie aż tak, jak to, co masz teraz.

Od Oracle 11.2.0.4 Total Recall zostało przemianowane na Flashback Archive i jest częścią licencji Enterprise License (chociaż bez skompresowanych tabel dzienników, chyba że wykupimy opcję Advanced Compress).

Ta hojność od Oracle powinna sprawić, że FDA stanie się normalnym sposobem przechowywania historii:jest wydajny, wydajny, jest wbudowanym Oracle ze standardową składnią do obsługi zapytań historycznych. Niestety, spodziewam się zobaczyć na wpół ugotowane implementacje ze spatchcocked triggerami, zepsutymi kluczami głównymi i straszną wydajnością jeszcze przez wiele lat. Ponieważ dziennikarstwo wydaje się być jednym z tych rozrywek, które zachwycają programistów, mimo że jest to niskopoziomowa kanalizacja, która jest w dużej mierze nieistotna dla 99,99% wszystkich operacji biznesowych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wydobyć dane z systemu SAP ABAP?

  2. Podłączanie Oracle 21c do SQL Server

  3. Połącz węzły XMLType w zapytaniu Oracle

  4. Przechowywanie wielu wartości dla jednego pola w bazie danych

  5. Jak pobrać wynik funkcji bazy danych Oracle przez ODBC?