Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Melhor maneira de evitar entrada duplicada no banco de dados mysql


O primeiro passo seria definir uma chave exclusiva na mesa:
ALTER TABLE thetable ADD UNIQUE INDEX(pageid, name);

Então você tem que decidir o que quer fazer quando há uma duplicata. Você deveria:

  1. ignore isto?
    INSERT IGNORE INTO thetable (pageid, name) VALUES (1, "foo"), (1, "foo");
    

  2. Substituir o registro inserido anteriormente?
    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. Atualizar algum contador?
    INSERT INTO thetable (pageid, name)
    VALUES (1, "foo"), (1, "foo")
    ON DUPLICATE KEY UPDATE (pagecount = pagecount + 1)