WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   mysql - lägga till rad om den inte finns (https://www.wn.se/forum/showthread.php?t=35282)

vco-systems 2009-02-20 20:37

Finns det någon funktion i MYSQL för att kontrollera om en rad redan finns i samband med insert?
Eg. jag vill att en rad ska läggas till i tabellen om det inte redan finns en identisk rad

Erik Stenman 2009-02-20 20:42

Tex: INSERT IGNORE INTO `tabell`
SET `fält` = 'värde',
"
Testa dock frågan först utan ignore.

Clarence 2009-02-20 21:19

INSERT IGNORE gör bara att ett eventuella fel-koder från unika nycklar resulterar i en varning istället.

Ett unikt (UNIQUE) index är nog vanligaste sättet att lösa detta. Andra sättet är att köra en select.

hnn 2009-02-20 22:28

REPLACE gör väl susen? Kräver dock ett unikt index

mrjb 2009-02-21 01:48

Citat:

Originally posted by hnn@Feb 20 2009, 23:28
REPLACE gör väl susen? Kräver dock ett unikt index

Kör med INSERT INTO ... ON DUPLICATE KEY UPDATE ... istället så går det snabbare. REPLACE gör först en DELETE och sen en INSERT vilket dels är långsammare, dels kan strula till det med constraints.

Exempel:

INSERT INTO counter SET id = 50, count = 1 ON DUPLICATE KEY UPDATE count = count + 1

vco-systems 2009-02-22 11:57

Löste det genom att lägga till ett unikt fält som var en sammanslagning av de övriga.
eg. fält1 = "fält2:fält3:.."

mrjb 2009-02-22 12:48

Citat:

Originally posted by vco-systems@Feb 22 2009, 12:57
Löste det genom att lägga till ett unikt fält som var en sammanslagning av de övriga.
eg. fält1 = fält2:fält3:..

Det går ju att ha flera kolumner kopplade till ett unikt index, men det kanske du redan visste.


Alla tider är GMT +2. Klockan är nu 10:06.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson