24. juni 2004 - 19:26Der er
13 kommentarer og 1 løsning
UPDATE sætter for mange kolonners felter
Jeg har en tabel med 2 typer tider. En starttid og en sluttid. På et tidspunkt skal sluttiden sættes (start og sluttiden bliver sat til den samme tid ved oprettelsen). Nedenstående sætning opdaterer sluttiden i tiden med id 1.
UPDATE tider SET sluttid = NOW() WHERE id = 1;
Men den sætter også starttiden til det samme selvom det jo så vidt jeg kan se ikke indgår i den sætning. Hvordan sikrer jeg at den KUN sætter sluttiden?
ja, starttid er rent faktisk af typen TIMESTAMP(14). Det er også pudsigt at hvis jeg for forsøgets skyld laver SET starttid = NOW() så opdaterer den kun starttid og lader sluttid være. Så måske kan jeg løse det ved at lade sluttid komme FØR starttid i min tabel.
Det ville dog være bedre hvis jeg bare kunne lave en sætning som ignorerede starttid, men hvis jeg har forstået dit link ret så er det ikke muligt?
"sluttid før starttid" ... du mener vel ikke at du vil løse problemet på den måde? Har du ikke brug for at mysql gør noget automatisk for dig, skal du ændre det til den rigtige type, DATETIME, som Arne skriver. Ellers kommer der igen engang timevis af frustrationer ;)
Hmmm... jeg kunne godt ændre det til DATETIME, men nu har jeg allerede en stor kørende applikation og hvis jeg ændrer for meget i databasen kan jeg ikke overskue om de andre fejl jeg har skyldes den ændring eller noget andet. Det er sikkert godt nok hvis man er i starten af sit projekt. Ellers tak for hjælpen.
Jeg er så uenig med dig Martin, belært af mange års erfaring. Det kan altid betale sig at bruge tid og kræfter på at fjerne sådan en bombe i dit program. En dag skal du eller en anden ændre noget i systemet, og kommer til at bruge meget tid på en mærkelig og uforklarlig opførsel. Det er bedre at rette det nu, hvor du kender problemet og systemet, end at vente.
Ja, jeg har også tænkt en del på det og nu har jeg så valgt at bruge DATETIME alligevel. Den er faktisk også mere læsbar når jeg er inde med mysql control center og kigge direkte i databasen.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.