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

MySQL - ignore o erro de inserção:entrada duplicada


Você pode usar INSERIR... IGNORAR sintaxe se você não quiser realizar nenhuma ação quando houver um registro duplicado.

Você pode usar REPLACE INTO sintaxe se você quiser substituir um registro antigo por um novo com a mesma chave.

Ou você pode usar INSERT... ON DUPLICATE ATUALIZAÇÃO DA CHAVE sintaxe se desejar executar uma atualização no registro quando encontrar uma duplicata.

Edit:pensei em adicionar alguns exemplos.

Exemplos


Digamos que você tenha uma tabela chamada tbl com duas colunas, id e value . Há uma entrada, id=1 e value=1. Se você executar as seguintes instruções:
REPLACE INTO tbl VALUES(1,50);

Você ainda tem um registro, com id=1 value=50. Observe que, no entanto, todo o registro foi EXCLUÍDO primeiro e, em seguida, reinserido. Então:
INSERT IGNORE INTO tbl VALUES (1,10);

A operação é executada com sucesso, mas nada é inserido. Você ainda tem id=1 e value=50. Finalmente:
INSERT INTO tbl VALUES (1,200) ON DUPLICATE KEY UPDATE value=200;

Agora você tem um único registro com id=1 e value=200.