Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]trigger na delete
Forum PHP.pl > Forum > Przedszkole
gawar
Witam, Mam problem z pomysłem na trigger dla zapytań delete. Mam tabele histori, do której podczas update i insert wpadają dane. Chce dołożyć trigger na delete, ale nie wiem jak wtedy do tej tabeli zapisać kto usuwa dany rekord (id_user - wyciągany z sesji), w przypadku pozostałych dwóch typów zapytań nie ma problemu. Bo tu jest jednak zapis, ale z delete jak sobie poradzić to już nie wiem. Ma ktoś jakiś pomysł?
skowron-line
A jak to sobie wyobrazasz questionmark.gif
Sesje ustawiasz w PHPie a triger wykonujesz w MySQL. (chyba więcej nie musze pisać)
gawar
To wiem, nie wiem po prostu jak przekazać do tego trrigera id_usera z sesji. jeżeli zapytanie na delete ma składnie:"DELETE FROM tabela WHERE cos =cos " to jak tu przekazać id_usera? Czy dopisywać inne zapytania i robić to w transackji? Nie mam pomysłu na wykoanie:(
skowron-line
Zamiast trigera zrob sobie funkcje preDelete lub postDelete w ktorej zrobisz sobie co tam chcesz.

Tak działają ORMy, warto zobaczyć jak to tam jest rozwiązane. Poczytaj sobie jako ciekawoste dlaczego ustawia się akcje w metodach post(insert|update|delete) lub pre(insert|update|delete).
gawar
Trochę nie wiem o czym do mnie piszesz:D
Mógłbyś bardziej to rozwinąć? Chyba jednak napiszę przed samym usunięciem rekordu update którym to wprowadze id_usera i potem wykonam dopiero delete. tylko że na update mam już też triggera i teraz zapisze się jedne niepotrzebny:(
skowron-line
Masz sobie funkcje|metode do usuwania rekordow ktora wyglada jakos tak
  1. function delete()
  2. {
  3.  
  4. }

zrob sobie 2 funkcje|metode ktora sie wykona przed wywolaniem tej funkcji|metody
  1. function preDelete()
  2. {
  3. // np. insert select, zakladajac ze do funkcji|metody przekazujesz ID rekordu ktory chcesz usunac
  4. }

i teraz wywolujac funkcje|metode zanim wywolasz delete wywolujesz preDelete i w tej metodize przenosisz sobie rekord do archiwum, a w delete usuwasz.

http://propelorm.org/documentation/06-behaviors.html
http://docs.doctrine-project.org/en/2.0.x/...nce/events.html

zerknij sobie w te 2 linki moze podpowiedza Ci jakies rozwiazanie (na przyszlosc)
gawar
Czyli w tym przypadku zupełnie się rezygnuje z triggerów?
skowron-line
Tak. Wtedy nie musisz się martwić czy baza na ktorej operujesz zapewnia taka funkjonalność jak trigery, no i oczywiście dużo większe możliwości masz robiąc to po stronie PHPa
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.