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

MySQL - ignorer indsættelsesfejl:dobbelt indtastning

Du kan bruge INSERT... IGNORE syntaks, hvis du ikke vil foretage dig noget, når der er en dubletpost.

Du kan bruge REPLACE INTO syntaks, hvis du vil overskrive en gammel post med en ny med samme nøgle.

Eller du kan bruge INSERT... ON DUPLICATE NØGLEOPDATERING syntaks, hvis du i stedet vil udføre en opdatering af posten, når du støder på en dublet.

Edit:Tænkte jeg ville tilføje nogle eksempler.

Eksempler

Lad os sige, at du har en tabel med navnet tbl med to kolonner, id og value . Der er én indgang, id=1 og værdi=1. Hvis du kører følgende sætninger:

REPLACE INTO tbl VALUES(1,50);

Du har stadig én post med id=1 værdi=50. Bemærk, at hele posten blev SLETTET først og derefter genindsat. Så:

INSERT IGNORE INTO tbl VALUES (1,10);

Handlingen udføres med succes, men intet er indsat. Du har stadig id=1 og værdi=50. Til sidst:

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

Du har nu en enkelt post med id=1 og værdi=200.



  1. Hurtigere alternativ i Oracle til SELECT COUNT(*) FROM nogetable

  2. SQLite ER NULL

  3. Sådan e-mailes forespørgselsresultater som en vedhæftet fil i SQL Server (T-SQL)

  4. Hvordan cbrt() virker i PostgreSQL