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

Il modo migliore per evitare voci duplicate nel database MySQL

Il primo passo sarebbe impostare una chiave univoca sul tavolo:

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

Quindi devi decidere cosa vuoi fare quando c'è un duplicato. Dovresti:

  1. ignorarlo?

    INSERT IGNORE INTO thetable (pageid, name) VALUES (1, "foo"), (1, "foo");
    
  2. Sovrascrivere il record precedentemente inserito?

    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. Aggiornare qualche contatore?

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