Avatar billede fjabboy Nybegynder
01. maj 2003 - 10:09 Der er 2 kommentarer og
2 løsninger

TIMESTAMP(14) NOT NULL

Jeg sidder og roder med et PHP-modul som henter en timestamp-værdi fra en MYSQL-DB. Problemet er bare at timestamp bliver opdateret med aktuel dato og tid, hvilket den IKKE skal. Jeg har fundet frem til at det skyldes at TIMESTAMP(14)-rækken i databasen ikke er sat til "NOT NULL", men hver gang jeg forsøger at sætte den til NOT NULL lykkedes det ikke. Jeg har både prøvet fra "mysql-prompten" samt fra mysql-front - ingen af delene virker. Er det virkelig umuligt at gøre hvad jeg forsøger eller findes der et hack til det?
(jeg vil helst undgå sætte rækketypen til datetime-format).

Nogen forslag folkens? :-)
Avatar billede clausjul Nybegynder
01. maj 2003 - 10:14 #1
Hver gang en record bliver ændret på en eller anden måde, så bliver timestamp-feltet opdateret automatisk. Hvis du ønsker, at dette felt skal kun opdateres en gang, så skal du bruge INT(14) i stedet for. Og lægge tal automatisk ind ved at skrive

INSERT INTO tbl (timestamp) values (date_format(now(),'%Y%m%d%h%i%s') - så bliver den indsat med current date/time og ikke bliver opdateret igen, hvis der sker ændringer igen i recorden.
Avatar billede fsconsult.dk Nybegynder
01. maj 2003 - 10:16 #2
"Problemet" med TIMESTAMP felter i MySQL er, at det første TIMESTAMP felt i en tabel ALTID bliver opdateret når du opdaterer tabellen, medmindre du angiver feltet selv.

Der er umiddelbart 2 løsninger.

1. Ændrer feltet fra TIMESTAMP til DATETIME.

2. Tilpas dine UPDATE's således at dit TIMESTAMP felt tildeles den eksisterende værdi: 
    UPDATE dintabel
      SET (dine opdateringer)
        , dittimestampfelt=dittimestampfelt
      WHERE (dine kriterier)
Avatar billede fsconsult.dk Nybegynder
01. maj 2003 - 10:22 #3
Hvorfor vil du helst ikke bruge DATETIME formatet forresten?  Jeg bruger stort set kun denne datatype til datoer, netop pga. TIMESTAMP's automatiske opdatering.

Det er derimod en rigtig dårlig ide at benytte INT(14), hvis du ønsker at bruge feltet til datoer. (du mister muligheden for at hente/sortere/beregne på de enkelt felter i datoen, samt at få datoen formatteret som du ønsker på udskriftstidspunktet).
Avatar billede fjabboy Nybegynder
01. maj 2003 - 11:03 #4
Tak for Jeres svar begge to.
Grunden til at jeg ikke ville benytte DATETIME i databasen var, at mit PHP-script er tilpasset TIMESTAMP-formatet. Scriptet bruger TIMESTAMP som en input-parameter, og udskriver herefter navnet på dagen, måneden osv. så det ser pænt ud.
Efter konverteringen til DATETIME fucker det lidt up, men det problem løser jeg nemt :-)
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