sql >> Database >  >> RDS >> Mysql

INSERT INTO ... OP DUPLICATE UPDATE alle waarden

INSERT INTO … ON DUPLICATE KEY UPDATE werkt op deze manier:

  • het probeert zoals gewoonlijk een rij in te voegen
  • als er een beperkingsschending in een kolom optreedt, wordt de UPDATE . uitgevoerd statement in plaats daarvan op de bestaande rij waarmee de INSERT verklaring botste

Dat betekent simpelweg dat als de UPDATE statement alleen zou succesvol zijn, het is ON DUPLICATE KEY UPDATE equivalent zal ook werken. Dat betekent dat je uiteraard geen beperkingen in de UPDATE . kunt schenden statement, of het hele ding zal mislukken (bijvoorbeeld proberen een waarde in te stellen op een UNIQUE kolom die al in een andere rij bestaat).

Als u dezelfde waarde opnieuw in dezelfde kolom instelt, is dat in wezen een no-op. De waarde in de kolom verandert niet en kan daarom ook geen fouten veroorzaken (laten we aannemen dat je geen echt funky hebt BEFORE UPDATE triggers die zich kunnen misdragen). Het aantal kolommen is hier niet relevant, u kunt zoveel of zo weinig kolommen in één verklaring wijzigen als u wilt.




  1. Controleer of de tabel bestaat in SQL Server

  2. Wat is het gebruik van SQL GROUP BY-instructie?

  3. Zoek verwijzende entiteiten in SQL Server:sys.dm_sql_referencing_entities()

  4. MySQL:weergave met subquery in de FROM-clausulebeperking