Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle - Задейства създаването на ред с история при актуализация

Добре, това е пренаписване. Това, което пропуснах, когато отговорих за първи път, е, че приложението съхранява своята история в главната таблица. Сега разбирам защо @NickCraver е толкова извинителен за кода.

Е, първото нещо, което трябва да направите, е да издирите извършителите на този дизайн и да се уверите, че никога повече не го правят. Съхраняването на история като това не се мащабира, прави нормалните (неисторически) заявки по-сложни и саботира релационната цялост. Очевидно има сценарии, при които нищо от това няма значение и може би вашият сайт е един от тях, но като цяло това е много лошо изпълнение.

Най-добрият начин да направите това е Oracle 11g Total Recall . Това е елегантно решение, с напълно невидимо и ефективно внедряване и - по стандартите на другите платени екстри на Oracle - на доста разумна цена.

Но ако Total Recall не може да става и вие наистина трябва да го направите това, не позволявайте актуализации . Промяна в съществуващ запис CONTACT трябва да бъде вмъкване. За да направите това да работи, може да се наложи да изградите изглед с тригер ВМЕСТО. Все още е гадно, но не толкова гадно, колкото това, което имате сега.

От Oracle 11.2.0.4 Total Recall е преименуван на Flashback Archive и е включен като част от корпоративния лиценз (въпреки че е лишен от компресираните журнални таблици, освен ако не закупим опцията Advanced Compress).

Тази щедрост от Oracle трябва да превърне FDA в нормалния начин за съхранение на история:той е ефективен, той е производителен, това е вграден Oracle със стандартен синтаксис за поддръжка на исторически заявки. Уви, очаквам да видя полусготвени реализации със задействани тригери, повредени първични ключове и ужасна производителност още много години. Тъй като воденето на дневник изглежда е едно от онези разсейвания, на които разработчиците се радват, въпреки факта, че това е водопроводна инсталация на ниско ниво, която до голяма степен е без значение за 99,99% от всички бизнес операции.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. (Oracle/SQL) Обединете всички типове данни в една колона

  2. Неуспешна проста процедура на Oracle

  3. Импортиране от валидираща проверка на базата данни на Oracle

  4. Как да използвате променливи в клауза where на Oracle PL/SQL

  5. SQL заявка Изберете първи ранг 1 ред от множество рангове/група