[MySQL] Problem z UPDATE

0

Witajcie,
mam taką tabelę (i przykładowy rekord):

CREATE TABLE `bad_pings` (
  `ID` int(11) NOT NULL auto_increment,
  `start_time` datetime NOT NULL default '0000-00-00 00:00:00',
  `end_time` datetime default NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM DEFAULT AUTO_INCREMENT=2 ;

INSERT INTO `bad_pings` VALUES (1, '2006-07-03 10:55:43', NULL);

I kiedy wywołuję zapytanie:

UPDATE `bad_pings` SET end_time = NOW( ) WHERE end_time = NULL;

Nic się nie dzieje, a powinny zmienić się wszystkie rekordy których end_time jest równy NULL...

Gdzie jest błąd?

Pzdr
alfanick

0

NULL to jest wartosc pusta, takie nic, więc komórka taka jest pusta.
Zobacz:
UPDATE bad_pings SET end_time = NOW( ) WHERE length(end_time) = 0;
albo np.:
UPDATE bad_pings SET end_time = NOW( ) WHERE length(end_time) < 5;

0

Nie wiem czemu, ale nie działa :-(

0

WHERE end_time IS NULL

0

Dzięki, właśnie o to mi chodziło

0

Taka sugestia na przyszłość - jak dajesz zapytanie
INSERT INTO tabela VALUES ( wartości );
to postaraj się stosować coś w tym stylu:
INSERT INTO tabela ( nazwa pola 1, nazwa pola 2 ) VALUES ( 'wartość pola 1', 'wartość pola 2' );
Dlaczego? Ano dlatego, że jak potem zmienisz strukturę bazy (wystarczy dodanie jakiegoś jednego pola, które będzie miało domyślną wartość, albo będzie mogło pozostać puste), albo nawet zmiana ich kolejności, to nie musisz wszystkich zapytań zmieniać, by wszystko działało. Po prostu tam, gdzie nie będziesz tego wstawiał, to zostanie puste pole lub domyślna wartość, ewentualnie automatycznie zwiększana wartiość (jeśli to będzie pole auto_increment).

0

Owszem nie doczytałem pole nie jest typu tekstowego, ale na przyszłość radzę używać czasu uniksowego, wygodniejszy we wszelakich operacjach.

1 użytkowników online, w tym zalogowanych: 0, gości: 1