Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Trigger z wpisami do tabeli logów
Forum PHP.pl > Forum > Bazy danych > MySQL
crac2003
Witam

Mam takie pytanie:
Otóż mam taką przykładową bazę danych:
{Test1} [t1_ID : integer] [t1_Data : TEXT]
oraz
{Test1Log} [t1l_ID : int] [t1l_DATE : DATETIME] [t1l_User : TEXT] [t1l_Event : TEXT]

i teraz w jaki sposób przekazać informację jaki użytkownik wprowadza zmiany do tabeli Test1? Chodzi mi o to aby trigger ustawiony na before insert mógł aktualizować dane Test1Log bez konieczności wczytywania dodatkowych informacji.

Pozdrawiam
phpion
Cytat(crac2003 @ 24.02.2009, 11:52:40 ) *
w jaki sposób przekazać informację jaki użytkownik wprowadza zmiany do tabeli Test1?

Możesz pobrać nazwę użytkownika poleceniem:
  1. SELECT USER();

jednak to zwróci nazwę użytkownika, spod którego nastapiło logowanie do MySQL. W przypadku aplikacji webowych zazwyczaj jest to jeden użytkownik więc chyba nie będzie to to, o co Ci chodzi.

Możesz jednak ustawić w PHP wartość zmiennej:
  1. <?php
  2. mysql_query("SET @user='".$user."'");
  3. ?>

i później się do niej odwoływać:
  1. SELECT @user;

Takie rozwiązanie powinno sprostać Twoim wymogom smile.gif
crac2003
Dzięki za odpowiedź. Jest naprawdę ok.
Tylko nasuwa mi się jeszcze jedno pytanie w związku z tym rowiązaniem. Co jeśli z aplikacji korzysta więcej niż 1 osoba? czy ustawienie zmiennej @user przypisze jej jakiś identyfikator połączenia aby było wiadomo z którego powinna zaczerpnąć informację czy też będzie to zmienna globalna? Pozdrawiam
phpion
Nie. Zmienna ta będzie widoczna tylko dla aktualnego połączenia i zniknie po jego zakończeniu (czyli po zakończeniu wykonywania skryptu lub po "ręcznym" rozłączeniu z bazą).
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.