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ď č. 1Na 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.