sql >> Databasteknik >  >> RDS >> Mysql

infoga vid dubblettnyckeluppdatering

Jag tror att svaret på detta tas upp i MySQL dokument :

Om en tabell innehåller en AUTO_INCREMENT kolumn och INSERT ... UPDATE infogar en rad, LAST_INSERT_ID() funktionen returnerar AUTO_INCREMENT värde. Om satsen uppdaterar en rad istället, LAST_INSERT_ID() är inte meningsfullt. Du kan dock undvika detta genom att använda LAST_INSERT_ID(expr) . Anta att id är AUTO_INCREMENT kolumn. För att göra LAST_INSERT_ID() meningsfullt för uppdateringar, infoga rader enligt följande:

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


  1. SQLite UNIK begränsning

  2. Hur kan jag skapa ett INSERT-skript för en tabell med ett VARBINARY(MAX)-fält?

  3. JPA - No Persistence Provider för EntityManager som heter {{NAME_HERE}}

  4. Automatisera huvuddelen av uppdateringsfrågor i pl\sql