sql >> Databáze >  >> RDS >> Mysql

INSERT INTO ... ON DUPLICATE AKTUALIZUJTE všechny hodnoty

INSERT INTO … ON DUPLICATE KEY UPDATE funguje takto:

  • pokusí se vložit řádek jako obvykle
  • Pokud dojde k porušení omezení v kterémkoli sloupci, provede se UPDATE místo toho na existující řádek, se kterým INSERT prohlášení se střetlo

To jednoduše znamená, že UPDATE samotný příkaz by byl úspěšný, jeho ON DUPLICATE KEY UPDATE ekvivalent bude také fungovat. To znamená, že zjevně nemůžete porušit žádná omezení v UPDATE buďto, nebo celá věc selže (např. pokus o nastavení hodnoty na UNIQUE sloupec, který již existuje v jiném řádku).

Pokud znovu nastavíte stejnou hodnotu na stejném sloupci, je to v podstatě nefunkční. Hodnota ve sloupci se nemění, a proto také nemůže způsobit žádné chyby (předpokládejme, že BEFORE UPDATE nemáte žádné opravdu funky spouštěče, které se mohou chovat špatně). Počet sloupců je zde irelevantní, v jednom příkazu můžete změnit tolik nebo jen málo sloupců, jak chcete.




  1. Jaký je nejlepší způsob řízení verzí uložených procedur serveru SQL?

  2. Jak otestovat připojení k databázi PHP MySQL pomocí skriptu

  3. Ukládání dat o stavu bota v mySQL pomocí .NET

  4. Jak transponovat sloupce a řádky v PostgreSQL (tj. jak mohu přepnout řádky a sloupce)?