Avatar billede htx98i17 Professor
16. juni 2012 - 20:10 Der er 12 kommentarer og
1 løsning

Replace - hvis et felt ikke medtages

Jeg har en replace hvor jeg undlader at medtage alle felter i tabellen.

Hvis jeg gør det, kan det så passe at de felter som ikke medtages, automatisk vil få standardværdi?

Det er fordi at jeg har nogle maskiner som har nogle data som ikke altid skal opdateres, eksempelvis triptæller. Der skal triptæller blot bevare sine data.
Avatar billede olebole Juniormester
16. juni 2012 - 20:31 #1
<ole>

Hvis du på et tidspunkt selv forstår, hvad du spørger om, kunne du så ikke forklare det for os andre?  =)

/mvh
</bole>
Avatar billede htx98i17 Professor
16. juni 2012 - 20:40 #2
haha :)

Jamen, det er da neemt at forstå.

Ser du,

jeg har en tabel med felterne felt1, felt2 og felt3.

I en REPLACE bruger jeg dog kun de to af dem:
REPLACE INTO tabel (felt1,felt2) VALUES ('data','data')

Når jeg gør dette, er det min teori at felt3 bliver "nulstillet" og får en standardværdi for feltet. Og det er lidt træls, da de data som står i felt3 skal blive.

Kan du bekræfte at felt3 nulstilles når feltet ikke medtages i queryen?

og er der en smart måde kan kan komme uden om at skal hente dataen fra felt3 først inden man replacer? :)
Avatar billede olebole Juniormester
16. juni 2012 - 20:55 #3
teori eller observation?
Avatar billede htx98i17 Professor
16. juni 2012 - 20:59 #4
observation så
Avatar billede olebole Juniormester
16. juni 2012 - 21:06 #5
Det er faktisk en yderst væsentlig forskel - og brugbar for en svarer  *o)

REPLACE INTO gør som forventet - replacer en række med en ny. Du skal bruge UPDATE i stedet for:

UPDATE tabel SET felt1='data', felt2='data'
Avatar billede olebole Juniormester
16. juni 2012 - 21:07 #6
- og formodentlig skal du have en WHERE-klausul på
Avatar billede htx98i17 Professor
16. juni 2012 - 21:12 #7
Det tænkte jeg nok. Jeg forsøgte så med:

(felt1,felt2,felt3) VALUES ('data','data',`felt3`)

men den gik ikke :)
Avatar billede olebole Juniormester
16. juni 2012 - 21:19 #8
Hvad gik ikke? Jeg er nok knap så clairvoyant, som du forestiller dig  =)
Avatar billede htx98i17 Professor
18. juni 2012 - 22:02 #9
lukker

Tak for deltagelsen
Avatar billede erikjacobsen Ekspert
18. juni 2012 - 23:40 #10
Syntaksen for UPDATE tillader ikke noget, der ligner

(felt1,felt2,felt3) VALUES ('data','data',`felt3`)

Vis lige hvad du gør, og hvad der sker.
Avatar billede erikjacobsen Ekspert
18. juni 2012 - 23:42 #11
Og "replace into" i mysql er et misfoster, der ret beset aldrig har en fornuftig anvendelse.
Avatar billede htx98i17 Professor
19. juni 2012 - 06:54 #12
Hej Erik,
Jeg bruger en update i stedet for.

Jeg har før brugt replace til at opdatere en tabel der styrer lagerbeholdningen. Ean og beholdning som de eneste felter. Der har den fungeret nemt.
Avatar billede olebole Juniormester
19. juni 2012 - 13:30 #13
"Der har den fungeret nemt." >> Det er ikke til at sige, hvad dét dækker, men 'nemhed' har aldrig været et kvalitetstegn.

MySQL's REPLACE statement er i udgangspunktet dårligt tænkt og konstrueret. Ret beset burde den smides på bålet, da der findes langt bedre funktioner, som udfører arbejdet langt bedre. Derfor ser du den stort set heller sldrig i kode fra en udvikler
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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