Hoje daremos uma dica do MySql, para aqueles que precisam fazer um insert, caso o registro não exista, e um update caso exista.
Para estes casos, o Mysql nos permite trabalhar de duas formas:
1 – Para fazer um insert caso o registro não exista, você utiliza o comando REPLACE. Por exemplo:
REPLACE tb_treinaweb (tb_id, nome, id_user) VALUES (1,’Bruno’, 152);
Neste caso, se já existir um registro com a chave ’1′, o REPLACE apaga a linha e insere um novo registro com a chave ’1′.
2 – Para fazer somente um UPDATE, obviamente caso o registro exista, utilizamos o comando ON DUPLICATE KEY UPDATE. Por exemplo:
INSERT tb_top (tb_id, name, id_user) VALUES (1, ‘Bruno’, 152) ON DUPLICATE KEY UPDATE name =’Bruno’, id_user = 152;
Neste caso, o comando não irá apagar a linha antes de incluir o registro, ele fará apenas o UPDATE dos campos especificados.
Os dois comandos então, tem basicamente a mesma função. O uso do REPLACE é mais simples, mas como ele elimina as linhas para inserir novos registros, caso você não informe algum campo, ele ficará vazio. Já o ON DUPLICATE KEY UPDATE, ele só afetará os campos informados.
Outro fator importante, é que no REPLACE, para saber se foi efetuado apenas o insert, ou se ele excluiu antes de inserir, é só notar o número de ROWS afetados, se for 1 será apenas o insert, se for 2 ele excluiu depois inseriu o registro.
Por hoje é só. Até a próxima!
show !
show [2]