/ / Mysql + ON DUPLICATE KEY UPDATE - mysql

Mysql + ON DUPLICATE KEY UPDATE - mysql

 INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=3;

Je to možné nastaviť tak, aby to nevyžadovalo a celý riadok zodpovedajúci. napr .: ak je stĺpec "a" duplikát, potom vykonajte aktualizáciu?

Vďaka

odpovede:

6 pre odpoveď č. 1

Na DUPLICATE KEY to robí len ... ak údaje, ktoré vkladáte, porušujú jedinečnú požiadavku kľúča, zmeňte ju na aktualizáciu v riadku, ktorý má kombináciu kľúčov, ktorá spôsobila porušenie.Ak je primárny kľúč iba jedno z polí (napríklad "a") a vy už mal riadok v tabuľke, kde a = 1, potom by ste namiesto toho dostali aktualizáciu a ten pôvodný riadok by dostal hodnotu "c" nastavenú na 3.

Ak je to kompozitný kľúč (povedzme "a, b"), potom, ak by ste mali existujúce záznamy s = 1 a b = 2, potom by sa riadky "C zmenili na 3 namiesto vytvorenia nového záznamu.

Ak v tejto tabuľke neexistujú žiadne jedinečné / primárne kľúče, nikdy by ste nemali aktualizovať, je to len extra-verbose insert statement.


2 pre odpoveď č. 2

Či je alebo nie je duplikát, je diktovanýpodľa obmedzení na stole. Toto by bol váš primárny kľúč, rovnako ako všetky jedinečné kľúče na stole. Takže ak máte na a stĺpec, potom by to fungovalo.

Inak by ste to mohli pravdepodobne dosiahnuť pomocou spúšťača.