INSERT INTO … ON DUPLICATE KEY UPDATE
funciona desta forma:- ele tenta inserir uma linha normalmente
- se ocorrer alguma violação de restrição em alguma coluna, ele executa o
UPDATE
em vez da linha existente com a qualINSERT
declaração conflitante
Isso significa simplesmente que se o
UPDATE
instrução sozinha seria bem-sucedida, seu ON DUPLICATE KEY UPDATE
equivalente também funcionará. Isso significa que você obviamente não pode violar nenhuma restrição no UPDATE
ou a coisa toda falhará (por exemplo, tentar definir um valor em um UNIQUE
coluna que já existe em outra linha). Se você definir o mesmo valor na mesma coluna novamente, isso é essencialmente um não operacional. O valor na coluna não muda e, portanto, também não pode causar nenhum erro (vamos supor que você não tenha nenhum
BEFORE UPDATE
realmente estranho gatilhos que podem se comportar mal). O número de colunas é irrelevante aqui, você pode alterar quantas ou poucas em uma declaração quiser.