sql >> Database teknologi >  >> RDS >> Mysql

INDSÆT I ... PÅ DUPLIKAT OPDATERING alle værdier

INSERT INTO … ON DUPLICATE KEY UPDATE fungerer på denne måde:

  • den forsøger at indsætte en række som normalt
  • hvis der opstår en overtrædelse af begrænsninger i en kolonne, udfører den UPDATE sætning i stedet for på den eksisterende række, hvormed INSERT erklæring stødte sammen

Det betyder ganske enkelt, hvis UPDATE sætning alene ville være vellykket, dens ON DUPLICATE KEY UPDATE tilsvarende vil også fungere. Det betyder, at du åbenbart ikke kan overtræde nogen begrænsninger i UPDATE sætning enten, ellers vil det hele mislykkes (f.eks. forsøg på at indstille en værdi på en UNIQUE kolonne, som allerede findes i en anden række).

Hvis du indstiller den samme værdi på den samme kolonne igen, er det i det væsentlige en no-op. Værdien i kolonnen ændres ikke og kan derfor heller ikke forårsage fejl (lad os antage, at du ikke har nogen rigtig funky BEFORE UPDATE triggere, der kan opføre sig forkert). Antallet af kolonner er irrelevant her, du kan ændre så mange eller så få i en erklæring, som du vil.




  1. Importer SQL-fil til mysql

  2. Hvordan ser du ALT tekst fra en ntext eller nvarchar(max) i SSMS?

  3. Forskellen mellem TRIM() og TRIM_ORACLE() i MariaDB

  4. Fatal fejl:Kald til udefineret metode mysqli_stmt::get_result()