Avatar billede claust Nybegynder
27. oktober 2011 - 13:43 Der er 10 kommentarer

Simpel update hjælp

Hej,

Skal opdatere en værdi på alle poster i min tabel til '1'

jeg har selv gættet mig frem til følgende, men er der en der kan bekræfte, inden jeg smadrer min database :-)

UPDATE brugere
SET allow_emails = '1'
WHERE allow_emails <> '1'
Avatar billede nemlig Professor
27. oktober 2011 - 13:55 #1
Det ser korrekt ud, men jeg vil da under alle omstændigheder anbefale, at du tager en backup af din database, inden du går i gang med opdateringen.
Avatar billede Milla-Tigerdyr Praktikant
27. oktober 2011 - 14:20 #2
Som nemlig siger, ville det være klogt at tage backup af din database.
- Jeg kan ikke se nogle fejl i dit lille kodestykke. :)
Avatar billede michael_stim Ekspert
27. oktober 2011 - 15:05 #3
UPDATE brugere
SET allow_emails = '1'

Gør vel i princip det samme.
Avatar billede arne_v Ekspert
27. oktober 2011 - 15:21 #4
Effekten paa allow_emails er den samme.

Jeg vil tro at der kunne vaere forskel hvis der er et timestamp felt som opdaters til now hvis raekken opdateres.
Avatar billede michael_stim Ekspert
27. oktober 2011 - 15:35 #5
#4

Så sandt, så sandt.
Avatar billede nemlig Professor
27. oktober 2011 - 16:00 #6
#4 - det vil jeg gerne lige forstå.

Hvad er forskellen hvis der også er et timestamp-felt, der samtidig opdateres:

UPDATE brugere
SET allow_emails = '1',tid = now()

Er vi ikke enige om, at så vil "allow_emails" blive sat til '1' på alle poster og den aktuelle servertid vil blive sat i feltet "tid".
Avatar billede michael_stim Ekspert
27. oktober 2011 - 16:13 #7
#5

Man kan have et timestamp felt, hvor der bliver opdateret automatisk hver gang der bliver rørt ved rækken.
Avatar billede arne_v Ekspert
27. oktober 2011 - 16:13 #8
UPDATE brugere
SET allow_emails = '1',tid = now()

og

UPDATE brugere
SET allow_emails = '1',tid = now()
WHERE allow_emails <> '1'

vil opdatere tid i et forskelligt antal raekker.

Min kommentar var dog mest omkring situationen hvor MySQL selv opdaterer timestampet (uden at det angives i SQL saetningen), hvor jeg vil forvente samme effekt.
Avatar billede michael_stim Ekspert
27. oktober 2011 - 16:17 #9
UPDATE table SET felt1='1' WHERE felt1 <> '1' //Så bliver felterne der ikke i forvejen har en etter opdateret, og man kan se på timestampfeltet hvilke rækker der er blevet opdateret.

UPDATE table SET felt1='1' //Så bliver alle felter opdateret, og man kan ikke, på timestampfeltet, se hvilke der er blevet ændret, da alle er blevet "ændret".
Avatar billede arne_v Ekspert
27. november 2011 - 01:32 #10
claus?
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