Avatar billede fangel Nybegynder
15. august 2003 - 22:52 Der er 18 kommentarer og
1 løsning

replace vs select+update

Hej

jeg har en tabel med medarbejdere, siden hvorpå man ændre dem kender ikke forskel på en ekisterende bruger (fx id 1-5) og en ny bruger fx id = 6)...

spørgsmåler er så om det er hurtigs/bedst at

-  se om en bruger emd dette id findes, hvis ja så update ellers insert
- bruge replace med en where id = 'valgt id'

---

hvad ville i gøre?

Morten
Avatar billede schaefner Juniormester
15. august 2003 - 22:55 #1
At bruge update er vel netop for at replace?
Avatar billede ztyxx Nybegynder
15. august 2003 - 22:55 #2
jeg ville nok lave et tjek om brugeren fandtes, men hvis du laver id som primær nøgle, ville der ikke være to en id, men det er du jo nok klar over ;-)
Avatar billede arne_v Ekspert
15. august 2003 - 22:55 #3
Er der en REPLACE Kommando i MySQL ?

Det er der ikke i standard SQL !
Avatar billede ztyxx Nybegynder
15. august 2003 - 22:57 #4
ja, der er en REPLACE i MySQL, her er et saks fra manualen:

REPLACE works exactly like INSERT, except that if an old record in the table has the same value as a new record on a unique index, the old record is deleted before the new record is inserted.
Avatar billede fangel Nybegynder
15. august 2003 - 22:57 #5
http://www.mysql.com/doc/en/REPLACE.html

replace findes ;)

---

men tror jeg følger ztyxx's del emd at søge først

---

schaefner => replace sletter en evt dublet og opretter en ny ;)

Morten
Avatar billede erikjacobsen Ekspert
15. august 2003 - 22:58 #6
Har du et autonummereret felt bevares det ved UPDATE, men bliver et nyt med REPLACE.
Det reducerer anvendeligheden en smule ;)
Avatar billede schaefner Juniormester
15. august 2003 - 22:58 #7
ahh, ok ;o)
Avatar billede fangel Nybegynder
15. august 2003 - 23:02 #8
erik => netop det jeg tænker - skulle bare lige have mine tanker vendt med et par andre ;)

Morten
Avatar billede arne_v Ekspert
15. august 2003 - 23:04 #9
Et lille suk.

Når nu man har 2 måder at gøre noget på: en standard og en ikke standard.

Hvorfor vælger folk så ikke altid standard medmindre de har meget meget
gode grunde til ikke at gøre det.

Hvis man sovser sin kode til i ikke standard SQL, så er man jo
ilde stedt den dag man skal skifte database.
Avatar billede fangel Nybegynder
15. august 2003 - 23:09 #10
arne => og hvilken er så standard? pt agter jeg at bruge select+update/insert

Morten
Avatar billede arne_v Ekspert
15. august 2003 - 23:11 #11
SELECT, INSERT, UPDATE og DELETE er standard SQL kommandoer.
Avatar billede erikjacobsen Ekspert
15. august 2003 - 23:12 #12
Det må jo gå lidt hurtigere med en REPLACE - og det er jo heller ikke altid man
bruger autonummerering (det bør jo kun være hvis man ikke kan finde på en
bedre primær nøgle)
Avatar billede fangel Nybegynder
15. august 2003 - 23:14 #13
folk kan jo hedde det samme (eller bo sammen) - så ID er umidbart bedste key til denne tabel

---

men jeg vil nu bruge select+update/insert - hvem vil have lidt point?

Morten
Avatar billede ztyxx Nybegynder
15. august 2003 - 23:16 #14
hvem synes du skal have dem, det er jo dig der suverænt afgør hvilket svar der var brugbart :-)
Avatar billede fangel Nybegynder
15. august 2003 - 23:19 #15
jeg synes alle har hjuplet - så dem der vil have lidt, lægger et svar, så bliver der ligeligt fordelt ;)

Morten
Avatar billede arne_v Ekspert
15. august 2003 - 23:20 #16
erik>

Jo - men jeg tror ikke at det vil være ret meget (1 disk read og 1 disk write
i begge tilfælde - forudsat at databasen har en cache)
Avatar billede erikjacobsen Ekspert
15. august 2003 - 23:26 #17
Men mindre netværkstrafik, og så bliver den enkelte sql-sætning udført atomart.
Avatar billede arne_v Ekspert
15. august 2003 - 23:31 #18
Netværks trafikken bekymrer mig ikke så meget.

Men det andet er faktisk et godt argument.

Jeg formoder at MySQL ikke understøtter SELECT FOR UPDATE.

Og hvis ikke der er et persisterings layer i applikationen a la
entity bean, så kunne der være nogle potentielle issues af den
ubehagelige slags.
Avatar billede fangel Nybegynder
21. august 2003 - 20:05 #19
nå, ingen har lagt svar - selv ved tiltale

så jeg lukker

Morten
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