sql >> Database >  >> RDS >> Mysql

De beste manier om dubbele invoer in de mysql-database te voorkomen

De eerste stap zou zijn om een ​​unieke sleutel op tafel te leggen:

ALTER TABLE thetable ADD UNIQUE INDEX(pageid, name);

Dan moet je beslissen wat je wilt doen als er een duplicaat is. Moet je:

  1. negeren?

    INSERT IGNORE INTO thetable (pageid, name) VALUES (1, "foo"), (1, "foo");
    
  2. Het eerder ingevoerde record overschrijven?

    INSERT INTO thetable (pageid, name, somefield)
    VALUES (1, "foo", "first")
    ON DUPLICATE KEY UPDATE (somefield = 'first')
    
    INSERT INTO thetable (pageid, name, somefield)
    VALUES (1, "foo", "second")
    ON DUPLICATE KEY UPDATE (somefield = 'second')
    
  3. Een teller bijwerken?

    INSERT INTO thetable (pageid, name)
    VALUES (1, "foo"), (1, "foo")
    ON DUPLICATE KEY UPDATE (pagecount = pagecount + 1)
    


  1. MySQL Galera Cluster 4.0 implementeren op Amazon AWS EC2

  2. Dynamische SQL (tabelnaam doorgeven als parameter)

  3. Efficiënte manier om alle rijen in een tabel bij te werken

  4. Wat is er nieuw in PostgreSQL 11