Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] timestamp
Forum PHP.pl > Forum > Przedszkole
Saper82
Witam

Mam pewien skrypt (SG w grze minecraft, skrypt jest w javie, chyba nie ma zrodel), tworzy on statystyki z gry, ale brakuje mi w nich informacji o czasie stworzenia wpisu do bazy.

Więc dodalem do tabeli kolumnę z cuurent_timesatamp. Jak dodaje ręcznie nowy wiersz do tabeli przez phpmyadmin wszystko jest ok

ale skrypt już nic nie dodaje przez tą nową kolumnę którą zrobiłem

Macie jakiś pomysł?


Myślę żeby co pare minut robić po prostu kopie nowych wpisów z tabeli stworzonej przez gre i w tej kopi dać jakiś time(). I na tej kopi pracować.
mstraczkowski
Jeżeli masz dostęp do TRIGGERÓW w bazie danych (wątpliwe) to w ten sposób możesz zareagować na zdarzenie AFTER INSERT.
Twój pomysł będzie działać, ale do najlepszych nie należy przy większej ilości rekordów będzie coraz wolniej, wolniej i wolniej, aż w końcu przestanie działać.
Saper82
czyli tylko przez konsole da się triggery zrobić, PMA nie da sie?
mam hosting na linux.pl, tam jest dostęp SSH, ale czy do bazy też, nie wiem.


tabela nie będzie duża, nie musi też szybko wykonywać się skrypt, wiec najwyżej zastosuje swój sposób.
Czy mysql ma jakąś komede do importowania danych z tabeli 1 do 2, ale tak żeby jak się drugi raz wywola
skrypt to żeby nie importowal ponownie tych samych danycyh, tylko nowe? tabela 2 bedzie miale dodatkowa
kolumne z tym czasem
mstraczkowski
Aby dodawać triggery w MySQL trzeba mieć roota do bazy danych, z tego co pamiętam.

Idąc drogą kombinowania to mógłbyś to zrobić za pomocą przykładowo:
  1. INSERT INTO `table_copy` SELECT B.*, CURRENT_DATE() FROM `table` AS B

Coś w tym rodzaju

Aby pobierać tylko nowe rekordy, a nie zawsze od nowa te same, to możesz pobawić się indexami UNIQUE, ale to już zależy od zestawu danych
Saper82
mam w panelu PMA wyzwalacze, mogę je dodawać.
Więc mam jakieś tam triggery, tak?

zrobiłem coś takiego
http://episiongames.pl/ss.jpg

ale baza wywala błąd #1442 ja coś dodaje do tej tabeli

nie mogę znaleźć w necie nic na temat tiggerów tworzonych w ten sposób co na screenie.
proszę o jakiś przykład, niekoniecznie rozwiązanie mego problemu

Robi się je raczej inaczej, ponieważ jak daje begin, end, inserty w kodzie to nawet nie chce zapisać takiego wyzwalacza PMA
mstraczkowski
Prawdopodobnie nie chce zapisać bo nie zdefiniowałeś prawidłowego separatora, przyjmuje się przy triggerach separator jako "$$" lub "//"
A ustawia się go pod polem do wprowadzenia zapytania SQL (często się o tym zapomina), przykładowy trigger może wyglądać tak:

  1. CREATE TRIGGER `nazwa_triggera` BEFORE INSERT ON `settings`
  2. FOR EACH ROW
  3. BEGIN
  4. SET NEW.`value` = 'wartosc';
  5. END$$


Saper82
nie do końca o to mi chodziło, ale już jest ok

w wyzwalaczach sama część BEGIN END wystarczy. Zawsze daawałem coś przed BEGIN jeszcze i stąd moje problemy

Dzięki, jeszcze wczoraj nie wiedziałem że coś takiego jak trigger istnieje. Teraz test czy rozwiąże on mój problem
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.