sql >> Database >  >> RDS >> Mysql

MySQL - negeer invoegfout:dubbele invoer

U kunt INSERT... IGNORE gebruiken syntaxis als u geen actie wilt ondernemen wanneer er een dubbele record is.

U kunt VERVANGEN IN gebruiken syntaxis als u een oud record wilt overschrijven door een nieuw record met dezelfde sleutel.

Of u kunt INSERT... ON DUPLICATE gebruiken BELANGRIJKE UPDATE syntaxis als u in plaats daarvan een update van de record wilt uitvoeren wanneer u een duplicaat tegenkomt.

Bewerken:ik dacht dat ik wat voorbeelden zou toevoegen.

Voorbeelden

Stel dat u een tabel heeft met de naam tbl met twee kolommen, id en value . Er is één invoer, id=1 en waarde=1. Als u de volgende instructies uitvoert:

REPLACE INTO tbl VALUES(1,50);

U heeft nog één record, met id=1 waarde=50. Merk op dat het hele record echter eerst werd VERWIJDERD en vervolgens opnieuw werd ingevoegd. Dan:

INSERT IGNORE INTO tbl VALUES (1,10);

De bewerking wordt met succes uitgevoerd, maar er wordt niets ingevoegd. Je hebt nog steeds id=1 en value=50. Eindelijk:

INSERT INTO tbl VALUES (1,200) ON DUPLICATE KEY UPDATE value=200;

U heeft nu één record met id=1 en value=200.



  1. Hoe MySQL-client automatisch opnieuw verbinden met MySQLdb inschakelen?

  2. Hoe fractionele seconden van een datetime-waarde in Oracle te retourneren?

  3. PRVG-2027 Eigenaar van bestand is inconsistent tussen knooppunten

  4. geheugenefficiënte ingebouwde SqlAlchemy iterator/generator?