Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Triggery
jan3k
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 7.12.2010

Ostrzeżenie: (0%)
-----


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ś (IMG:style_emoticons/default/questionmark.gif)


Pozdrawiam
Go to the top of the page
+Quote Post
Smertius
post
Post #2





Grupa: Zarejestrowani
Postów: 156
Pomógł: 31
Dołączył: 23.02.2009
Skąd: Sanok

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post
jan3k
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 7.12.2010

Ostrzeżenie: (0%)
-----


niewiele rozumiem z 3 lini :/ mowie jestem poczatkujący moze ktos by mi pomogl.. (IMG:style_emoticons/default/questionmark.gif) wiem to glupie ale ktos kto by poprawdził za reke (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
Smertius
post
Post #4





Grupa: Zarejestrowani
Postów: 156
Pomógł: 31
Dołączył: 23.02.2009
Skąd: Sanok

Ostrzeżenie: (0%)
-----


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

Ten post edytował Smertius 7.12.2010, 19:55:11
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 12:49