Avatar billede ettol Nybegynder
14. oktober 2003 - 09:20 Der er 13 kommentarer og
1 løsning

INSERT hvis række ikke findes

hvordan skriver man
INSERT INTO tabel (b, c) VALUES (123,456);
HVIS der ikke findes en række med de angivne værdier på plads b,c
Avatar billede ohmish Nybegynder
14. oktober 2003 - 09:54 #1
gør felterne UNIKKE og sæt ind som du plejer
og check bagefter om de er sat ind
Avatar billede arne_v Ekspert
14. oktober 2003 - 09:55 #2
Lave et unikt index op felterne og brug REPLACE.

Læs mere her:

http://www.mysql.com/doc/en/REPLACE.html
Avatar billede nak-m Nybegynder
14. oktober 2003 - 10:06 #3
I php kan du i hvert fald gøre sodanne:

$tjek = mysql_query("SELECT * FROM tabel WHERE b='123' AND c='456'");
if(mysql_num_rows($tjek) == false) {
  INSERT INTO tabel (b, c) VALUES (123,456);
}
Avatar billede ohmish Nybegynder
14. oktober 2003 - 10:12 #4
lav et UNIQUE felt/gruppe og brug herefter dette:

mysql_query("INSERT INTO tabel (b, c) VALUES (123,456)");
if (@mysql_affected_rows()>0) {
echo "query ok<br>"; }
else {
echo "fejl. rækken/felterne eksisterer allerede<br>"; }
Avatar billede ohmish Nybegynder
14. oktober 2003 - 10:35 #5
@mysql_query("INSERT INTO tabel (b, c) VALUES (123,456)");

if (@mysql_affected_rows()>0) {
echo "query ok<br>"; }

else {

echo "der skete en fejl<br>";

if (@mysql_errno() == 1062) {
echo "rækken/felterne eksisterer allerede<br>"; }
}
Avatar billede ettol Nybegynder
14. oktober 2003 - 10:37 #6
1) "Lave et unikt index op felterne og brug REPLACE" - hvordan erklærer jeg en gruppe af felter unique? Jeg er med på hvordan det sker for ét enkelt.
2) hvordan kalder jeg mysql_affected_rows fra asp.net?
Avatar billede arne_v Ekspert
14. oktober 2003 - 10:47 #7
Du laver et index med CREATE INDEX.

Men jeg tror at muligvis at jeg har misfprstået spørgsmålet.

REPLACE er en:

hvis data allerede er der så
  UPDATE
ellers
  INSERT

Mens det lyder som du behøver en:

hvis data ikke er der så
  INSERT
Avatar billede ettol Nybegynder
14. oktober 2003 - 10:51 #8
det sidste er korrekt. Hvis data er der så er det fint - ellers indsæt dem
Avatar billede arne_v Ekspert
14. oktober 2003 - 10:59 #9
Så er det ohmish's løsning du skal bruge.

(med unik index og normal INSERT)
Avatar billede ohmish Nybegynder
14. oktober 2003 - 11:04 #10
jeg gjorde faktisk den fejl, at jeg tog det for givet at du brugte PHP. sorry :) kender desværre ikke asp syntax
Avatar billede ettol Nybegynder
14. oktober 2003 - 11:39 #11
så er det lykkedes mig at lave et UNIQUE INDEX (...,...) som virker - (yeahh). Så tror jeg at jeg selv kan klare resten
Avatar billede ohmish Nybegynder
14. oktober 2003 - 11:57 #12
bare husk, at UNIQUE gør at du ikke KAN have felter med samme indhold
Avatar billede ettol Nybegynder
14. oktober 2003 - 13:27 #13
ja, men når jeg bruger UNIQUE INDEX så betyder det at jeg ikke kan have
a,a
a,a
men godt
a,a
a,b
ik?
Avatar billede ohmish Nybegynder
14. oktober 2003 - 13:34 #14
hvis du har samlet 2 felter i et unikt index, skal bare det ene være helt nyt - så godtages det.

selvsagt: hvis du har 2 unikke felter, er de uafhængige af hinanden
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