Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][MySQL]Wykrywanie dodania rekordu do bazy MySQL, Po dodaniu rekordu do bazy wykonuje się funksja sumująca ...
maverickoti
post
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.04.2013

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


Witam.

Mam taki problem. Mianowicie mam jedną bazę z paroma tabelami. I w jednej tabeli zawarte są punkty użytkowników. Punkty dodawane są za pomocą wpisów do tabeli np:
id | punkty
01 | 20
02 | 5
01 | 10

Ja widać user 01 posiada 30 pkt (20+10) a użytkownik 02 posiada 5 pkt

Teraz potrzebuje, rozwiązania, która "wykryje" dodanie nowego rekodru, zsumuje rekordy i wynik doda do tabeli w tej samej bazie.

Potrafię to zrobić przy pomocy ręcznego wywołania funkcji, lecz potrzebuje to zautomatyzować, by funkcja aktywowała się za każdym razem jak zostanie dodany nowy rekord. Zaznacze, że punkty można dodawać w różny sposób (poprzez kupienie ich, ręczne dodanie z panelu administratora, wpisanie kodu w panelu klienta). Wynik oczywiście jest taki sam, czyli nowy rekord z punktami.

Ma ktoś jakąś konstruktywną sugestję jak to rozwiązać? Może użyć CRON? Da się by cron aktywował operacją w momencie dodania rekordu do bazy?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
maverickoti
post
Post #2





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.04.2013

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


zauważyłem z tym points, że ta linijka jest niepotrzebna, ale chciałem zobaczyć czy zadziałą (IMG:style_emoticons/default/smile.gif)

Tak mi się spodobały triggery, że postanowiłem napisać następny iii znowu ściana. Coś namieszłaem z pętlą chyba. Możecie na to zerknąć:
  1. BEGIN
  2. SET @gen_nr_aukcji = NEW.gen_nr_aukcji;
  3. SET @gen_ilosc_kodow = NEW.gen_ilosc_kodow;
  4.  
  5. SET @gen_dni_new = NEW.gen_dni_new;
  6. SET @gen_trans_new = NEW.gen_trans_new;
  7. SET @dzien = date(d);
  8. SET @miesiac = date(m);
  9. SET @rok = date(y);
  10. SET @full_data = date();
  11.  
  12. FOR nazwa_petli IN 1..@gen_ilosc_kodow loop
  13. @random_kod(10000, 99999);
  14. @wygenerowany_kod = @gen_dni_new . @dzien . @random_kod . @rok . @miesiac . @gen_trans_new;
  15. INSERT INTO aaa_kody VALUES ('','@gen_nr_aukcji','@wygenerowany_kod','@full_data');
  16. end loop;
  17. END


trigger to before insert
Dodam tylko, że (@gen_dni_new . @dzien . @random_kod . @rok . @miesiac . @gen_trans_new;) to są wartości liczbowa a ja nie chcę ich dodawać tylko je połączyć w jeden ciąg liczbowy.

Błąd jaki otrzymuje:
"/* SQL Error (1064): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ');

for nazwa_petli in 1..@gen_ilosc_kodow loop
@random_kod(10000, 99999);' at line 10 */"

Ten post edytował maverickoti 23.06.2014, 21:51:10
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.10.2025 - 02:06