![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zablokowani Postów: 2 Pomógł: 0 Dołączył: 25.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Jak zachować wszystkie UPDATE i DELETE w bazie? Czyli jak nie nadpisywać danych tylko mieć całą historie zmian. Od początku. Mam bazę o strukturze id, pole1, pole2, data_aktualizacji, użytkownik Dostęp do bazy ma kilku użytkowników, każdy może aktualizować i usuwać rekordy. Chodzi mi o to ze chce mieć całą historie zmian w bazie a nie tylko aktualny rekord. Oczywiście użytkownik ma widzieć tylko aktualny wpis lub jego brak jeśli jest usunięty, czyli dla użytkownika baza działa klasycznie, (usuwa i aktualizuje rekordy i widzi wynik), ale ja chce mieć wgląd w operacje na bazie. Mam taki pomysł dokładam pole id_update i ewentualnie pole status które informuje czy rekord jest usunięty i wychodzi coś takiego id, id_update, status, pole1, pole2, data_aktualizacji, użytkownik kluczem głównym będą 2 pola id i id_update Aktualizując nie robie UPDATE tylko INSERT nowego rekordu o tym samym id a id_update zwiększam o 1 (najwyższe id_update to aktualny wpis) wtedy mam łatwy wgląd w historie aktualizacji Przy DELETE to samo (czyli id_update zwiększam o 1) tylko status zmieniam na usunięty I tu moja prośba Czy w ten sposób nie próbuje wyważyć otwartych drzwi. Może ten problem już dawno jest rozwiązany i sprawdzone jego działanie. Może ktoś ma inny (prostszy, szybszy, wypróbowany) sposób niż tu zaproponowałem? Może są gotowe funkcje w MySql, które to rozwiązują. Proszę o sugestie. Dzięki Ten post edytował zdzichupl1 25.08.2009, 20:18:00 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Moim zdaniem lepiej stworzyć oddzielną tabelę w której będziesz logował wszystkie akcje związane z bazą.
Dzięki oddzielnej tabeli możesz łatwo sobie zapisać takie dodatkowe dane jak IP, przeglądarkę, system, datę, godzinę oraz co najważniejsze, co się zmieniło (stan poprzedni -> stan obecny) lub ewentualnie co zostało usunięte, dodane. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 06:47 |