Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Triggery
Forum PHP.pl > Forum > Bazy danych
jan3k
Witam mam pytanko

Ze względu ze jestem początkujący postaram sie opisać swoje pytanie dość jasno.
Chciałbym aby wszystkie zmiany które zachodzą w mojej bazie danych były rejestrowane do nowej tabeli. Informacje o tych zmianach sa zapisane w tabeli gdzie uzupełniają sie pola kto zmienił kiedy i co zrobił (usunął, zmodyfikował). Wiem ze w tym celu potrzebny mi jest nowa tabela pytanie z jakimi polami i jakie powinny miec atrybuty oraz triggery które będą to rejestrować. Czy może ktoś pomóc w napisaniu takiego czegoś questionmark.gif


Pozdrawiam
Smertius
Do takiego rozwiązania nie wystarczy ci jedna tabela, do każdej tabli musisz utworzyć tabelę która będzie zawierała log zmian w danej tabeli(tzn. nie musisz winksmiley.jpg ale tak będzie najbardziej czytelnie). Poniżej masz przykładowy trigger który robi kopię danych wtedy kiedy wykonywany jest UPDATE na danym rekordzie.


  1. CREATE TRIGGER `storage_log` BEFORE UPDATE ON `storage`
  2. FOR EACH ROW BEGIN
  3. INSERT INTO storage_log SET storage_log.storage_id=old.storage_id, storage_log.storage_quantity_new=new.storage_quantity, storage_log.storage_quantity_old=old.storage_quantity;
  4. END
jan3k
niewiele rozumiem z 3 lini :/ mowie jestem poczatkujący moze ktos by mi pomogl.. questionmark.gif wiem to glupie ale ktos kto by poprawdził za reke questionmark.gif
Smertius
W trzeciej linii masz normalnego INSERT który dodaje nowe wartości do tabeli storage_log.
Do polu ze starej wartości pola odwołujesz się poprzez old.nazwa_kolumny do nowej wartości analogicznie tylko że z użyciem new

http://dev.mysql.com/doc/refman/5.1/en/triggers.html
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.