Avatar billede mickeyboy Nybegynder
25. februar 2005 - 10:59 Der er 5 kommentarer og
1 løsning

Bug? MySQL opdaterer felt der ikke er med i UPDATE

Jeg assisterer på en hjemmeside med følgende versioner:
php: v4.3.10
mySQL: v4.0.21

Jeg har følgende SQL:
UPDATE debat
SET AntLaest = AntLaest + 1
, SenestOpdat = NOW()
WHERE  ID = $REQUEST_ID

SQL'et virker som sådant helt fint. Men af ukendte årsager bliver den første timestamp-værdi i tabellen (OpretTid) også sat til NOW() ved ovenstående update.

Efter jeg havde hevet alle hårene af hovedet prøvede jeg at omdøbe OpretTid til OpretTid2 og tilføje OpretTid i slutningen af tabellen. Nu er det så OpretTid2 der bliver opdateret - altså stadigvæk den første timestamp-værdi i tabellen.

Umiddelbart ser jeg kun den løsning at jeg tilføjer et dummy-felt i starten af alle tabeller, men det synes jeg ikke kan være rigtigt.

Er der nogle der kender til denne bug og ved hvad jeg ellers kan gøre for at undgå problemet?
Avatar billede detox Nybegynder
25. februar 2005 - 11:01 #1
Er feltet: 'OpretTid' af typen TIMESTAMP, for så bliver den automatisk opdateret?
Avatar billede mickeyboy Nybegynder
25. februar 2005 - 11:06 #2
tabellen indeholder følgende felter med typen TIMESTAMP:
OpretTid2 (den jeg lavede om), SenestLaestTid, SenestIndlaeg, SenestOpdat og OpretTid
men det er kun OpretTid2 der bliver opdateret.

Mig bekendt er felttypen alene en definition af hvordan værdien bliver gemt .. intet med auto-update?
Avatar billede detox Nybegynder
25. februar 2005 - 11:09 #3
Fra manualen:

A TIMESTAMP column is useful for recording the date and time of an INSERT or UPDATE operation. The first TIMESTAMP column in a table is automatically set to the date and time of the most recent operation if you don't assign it a value yourself

Altså det første felt af typen TIMESTAMP bliver automatisk opdateret!
Det kan du jo så vælge at udnytte ved at sætte det felt der skal opdateres ('SenestOpdat') først :o)
Avatar billede mickeyboy Nybegynder
25. februar 2005 - 11:11 #4
Hov ... jeg har lige været inde på MySQL og fundet beskrivelsen

11.3.1.1. TIMESTAMP Properties Prior to MySQL 4.1
The TIMESTAMP column type provides a type that you can use to automatically mark INSERT or UPDATE operations with the current date and time. If you have multiple TIMESTAMP columns in a table, only the first one is updated automatically.

detox - skriv lige et svar :) Mange tak for hjælpen !!
Avatar billede detox Nybegynder
25. februar 2005 - 11:12 #5
Jeps, velbekommen :O)
Avatar billede mickeyboy Nybegynder
25. februar 2005 - 12:55 #6
Der sker ingenting når jeg trykker på Accepter?
detox .. du må lige vente med pointene .. prøver igen i løbet af weekenden.
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



IT-JOB