Avatar billede martin_t Nybegynder
24. juni 2004 - 19:26 Der 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?
Avatar billede arne_v Ekspert
24. juni 2004 - 19:29 #1
Den UPDATE sætter ikke starttid.

Men et gæt: startid er af typen TIMESTAMP og bliver derfor automatisk opdateret
fordi rækken bliver opdateret.
Avatar billede arne_v Ekspert
24. juni 2004 - 19:30 #2
Avatar billede martin_t Nybegynder
24. juni 2004 - 19:53 #3
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?
Avatar billede arne_v Ekspert
24. juni 2004 - 20:02 #4
Ja den automatisk mekanisme gælder kun for første TIMESTAMP kolonne.

Men har du bruge for den feature ?

Hvis nej så skift til DATETIME.
Avatar billede martin_t Nybegynder
24. juni 2004 - 20:32 #5
Jeg har ændret min database til at have sluttid før starttid så nu virker det bare som det skal!

Smid et svar og pointene er dine samt mange, mange tak for hjælpen. Du aner ikke hvor lang tid jeg har brugt på det her. :)
Avatar billede arne_v Ekspert
24. juni 2004 - 20:33 #6
ok
Avatar billede arne_v Ekspert
24. juni 2004 - 20:34 #7
Den TIMESTAMP kan både være utrolig nyttig og utrolig giftig
Avatar billede erikjacobsen Ekspert
24. juni 2004 - 22:50 #8
"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 ;)
Avatar billede martin_t Nybegynder
25. juni 2004 - 08:34 #9
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.
Avatar billede martin_t Nybegynder
25. juni 2004 - 08:35 #10
Jeg kan i øvrigt ikke acceptere svaret Arne. 'Eksperten' gør intet når jeg trykker accepter... ???
Avatar billede arne_v Ekspert
25. juni 2004 - 08:37 #11
Du skal markede mit navn så det bliver blåt i combo boxen inden du
klikker accepter
Avatar billede erikjacobsen Ekspert
25. juni 2004 - 09:59 #12
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.

Men det er selvfølgelig bare min mening.
Avatar billede martin_t Nybegynder
28. juni 2004 - 20:05 #13
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.
Avatar billede erikjacobsen Ekspert
28. juni 2004 - 20:08 #14
;)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester