Update on duplicate key?

PHPportalen Forum Index » Databaser
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
snylften



Medlem i: 3753 dagar

Status: Offline



#741247
Inlägg Skrivet: 2016-12-14 12:27      Ämne: Update on duplicate key? Citera

Hallå

Jag har en tabell där jag vill föra in en massa rader. Men om indatas är samma så vill jag göra en update istället för att föra in en exakt likadan rad.

KOD:
1:
CREATE TABLE `stats_searchresult` (
2:
  `customer_id` int(11) NOT NULL,
3:
  `date` date NOT NULL,
4:
  `hits` mediumint(9) NOT NULL
5:
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


Om customer_id och date redan finns så ska hits uppdateras med 1

Jag har testat med det här men inte fått det att fungera.
KOD:
1:
INSERT INTO `stats_searchresult` (`customer_id`, `date`, `hits`) VALUES ('915300', '2016-12-14', '1'), ('915301', '2016-12-14', '1') ON DUPLICATE KEY UPDATE hits = hits+1


Vad gör jag för fel?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 3959 dagar
Från: Tavesta
Status: Offline



#741248
Inlägg Skrivet: 2016-12-14 12:41      Ämne: Citera

Du behöver ett unikt fält i tabellen.
I det här fallet kunde kanske customer_id användas som PRIMARY KEY:

KOD:
1:
...
2:
`customer_id` int(11) NOT NULL PRIMARY KEY,
3:
...
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
snylften



Medlem i: 3753 dagar

Status: Offline



#741249
Inlägg Skrivet: 2016-12-14 14:03      Ämne: Citera

tack för svaret. Customer_id är inte unik, däremot är den unik i kombination med date. Det kan alltså finnas endast en rad med ett datum och customer_id.

Kan man ha tvi primary_key, eller sätta att kombinationen av två kominer ska vara unik på något sätt?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 3959 dagar
Från: Tavesta
Status: Offline



#741250
Inlägget är accepterad som det rätta svaret Skrivet: 2016-12-14 14:41      Ämne: Citera

Ja, det går att skapa en primärnyckel av flera fält. I ditt fall borde det bli något i stil med det här:
KOD:
1:
CREATE TABLE `stats_searchresult` (
2:
  `customer_id` int(11) NOT NULL,
3:
  `date` date NOT NULL,
4:
  `hits` mediumint(9) NOT NULL,
5:
  PRIMARY KEY(`customer_id`, `date`)
6:
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » Databaser
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic