sunsetting
Problem jest taki. Tworzę sobie bazę dancyh, dodaję rekord:
Kod: INSERT INTO `zadania`
(
`zapytanie` ,
`opis` ,
`okres` ,
`ilosc_cykli` ,
`licznik_cykli` ,
`czas_stworzenia` ,
`uzytkownicy_login`
)
VALUES
(
'"program for linux"', NULL , '1', '14', '0', NOW( ) , 'ciembor'
);
i wszystko jest fajnie... do momentu aktualizacji pola licznik_cykli:
Kod: function zmien_licznik_cykli($id, $login, $cykl)
{
if(!sql_zapytanie("UPDATE zadania
SET licznik_cykli = $cykl
WHERE id = $id AND uzytkownicy_login = '$login'"))
{
return mysql_error();
}
}
Po wywołaniu tej funkcji, poza licznikiem cykli zmienia się także czas_stworzenia. Jak dodać nowy rekord z timestampem czasu stworzenia, który nie będzie się aktualizował wraz z innymi polami? Rzecz jasna chodzi mi o zrobienie tego z poziomu SQL, nie PHP.
zapytanie w podanej funkcji nie powinno modyfikować czasu na aktualny chyba że...
w create table jest DEFAULT NOW() - nie testowałem czy takie coś jest wogóle możliwe ale może to być przyczyną.
Jakiego typu masz pola? Jesli jest to timestamp, wtedy jest automatycznie aktualizowane w momencie zmiany wiersza
Cytat: The TIMESTAMP data type offers automatic initialization and updating. You can choose whether to use these properties and which column should have them:
Zobacz caly opis a zrozumiesz
http://dev.mysql.com/doc/.../timestamp.html
Jesli chcesz trzymac date utworzenia to w trakcie insert daj NOW(), a typ pola DATETIME, wtedy wartosc bedzie stala
Swoja droga dlugi czas nie mialem stycznosci z MYSQL, wiec nie wiem do konca co sie teraz w nim dzieje.
Dzięki za odpowiedzi, w MySQL podobno tak już jest, że jak się aktualizuje jakiś rekord, to aktualizują się automatycznie wszystkie timestampy. Rozwiązanie trywialne: czas_stworzenia = czas_stworzenia. Już nie będę zmieniał typu pola na DATETIME, bo jutro oddaję projekt, a wypadałoby mieć już jakieś wyniki w bazie;).