Kom ihåg mig?
Home Menu

Menu


mysql - lägga till rad om den inte finns

Ämnesverktyg Visningsalternativ
Oläst 2009-02-20, 20:37 #1
vco-systemss avatar
vco-systems vco-systems är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Dec 2004
Inlägg: 774
vco-systems vco-systems är inte uppkopplad
Mycket flitig postare
vco-systemss avatar
 
Reg.datum: Dec 2004
Inlägg: 774
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
vco-systems är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-20, 20:42 #2
Erik Stenman Erik Stenman är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2007
Inlägg: 2 154
Erik Stenman Erik Stenman är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2007
Inlägg: 2 154
Tex: INSERT IGNORE INTO `tabell`
SET `fält` = 'värde',
"
Testa dock frågan först utan ignore.
Erik Stenman är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-20, 21:19 #3
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
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.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-20, 22:28 #4
hnn hnn är inte uppkopplad
Banned
 
Reg.datum: Mar 2004
Inlägg: 2 587
hnn hnn är inte uppkopplad
Banned
 
Reg.datum: Mar 2004
Inlägg: 2 587
REPLACE gör väl susen? Kräver dock ett unikt index
hnn är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-21, 01:48 #5
mrjb mrjb är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2009
Inlägg: 39
mrjb mrjb är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2009
Inlägg: 39
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
mrjb är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-22, 11:57 #6
vco-systemss avatar
vco-systems vco-systems är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Dec 2004
Inlägg: 774
vco-systems vco-systems är inte uppkopplad
Mycket flitig postare
vco-systemss avatar
 
Reg.datum: Dec 2004
Inlägg: 774
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:.."
vco-systems är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-22, 12:48 #7
mrjb mrjb är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2009
Inlägg: 39
mrjb mrjb är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2009
Inlägg: 39
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.
mrjb är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 13:39.

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