Avatar billede ostehamster Nybegynder
25. august 2005 - 13:29 Der er 6 kommentarer og
1 løsning

Insert if not exist?

Hejsa

Jeg har en tabel med to felter brugerid og forumid. Når en bruger har tilføjet en besked til et forum, skal brugeren gemmes i denne tabel. Men hvis nu det er anden gang brugeren skriver noget, skal der ikke laves en ekstre post.

Hvordan laver man det i SQL? Man skal indsætte en record, men kun hvis der ikke findes en magen til?

Gode hilsner - og på forhånd tak
Christoffer
Avatar billede arne_v Ekspert
25. august 2005 - 13:37 #1
hvis du laver et UNIQUE INDEX på det som identificerer "magen til" så får
du fejl ved den anden INSERT
Avatar billede ostehamster Nybegynder
25. august 2005 - 13:49 #2
Men man kun kun lave UNIQUE INDEX på i kollonne ikke? Problemet er at en bruger jo godt kan skrive i flere forums, og mange brugere kan skrive i samme forum. Så den skal tjekke på begge kollonner.

Og jeg synes det er lidt første at skulle lave en SELECT for at se om den er der, og derefter lave en INSERT
Avatar billede arne_v Ekspert
25. august 2005 - 13:52 #3
du kan godt lave et UNIQUE INDEX på en kombination af kolonner

SELECT + test i kode + INSERT hvis ikke

er normalt ikke særlig fler bruger sikker
Avatar billede kjulius Novice
26. august 2005 - 00:08 #4
---> arne_v: Er argumentet om, at "SELECT + test i kode + INSERT" ikke er en særlig sikker metode i en flerbruger situation ikke lidt malplaceret i netop den situation ostehamster beskriver?
Da brugerid (som må formodes kun at relatere til én bruger) indgår i den key, der skal tjekkes, kan usikkerheden vel ikke opstå.
Men jeg her helt med på, at det i mange andre situationer ikke er en farbar vej.
Avatar billede arne_v Ekspert
04. september 2005 - 23:25 #5
man ved aldrig - der er 2 som deler brugernavn - en bruger er utålmodig og klikker
submit 2 gange - man kan lige så godt lave det ordentligt
Avatar billede kjulius Novice
04. september 2005 - 23:38 #6
Okay, godt argument. :-)
Avatar billede arne_v Ekspert
29. september 2005 - 20:45 #7
all set ?
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