Inserindo e alterando registros

Poucos sabem, mas existe no mysql  2 maneiras de fazer insert caso nao exista o registro e update caso exista, REPLACE e INSERT … ON DUPLICATE KEY UPDATE. A syntaxe é seguinte:

mysql> REPLACE tb_table (tbl_id,tbl_name) VALUES (‘1′,’Jão’);
Caso ja exista a chave ‘1′ o REPLACE apaga a linha e insere um novo registro com o ID 1

mysql> INSERT tb_table (tbl_id,tbl_name) VALUES (1,’Jão’) ON DUPLICATE KEY UPDATE tbl_name=’Jão’
Ao contrário da função REPLACE, ON DUPLICATE KEY UPDATE,  nao apaga a linha, e sim faz apenas o UPDATE  do campo especificado.

O Uso de REPLACE é mais simples, porém, como ele elimina a linha para inserir novos registros, caso vc nao passe algum campo este ficará vazio, e no uso de ON DUPLICATE KEY UPDATE,  voce escolhe quais serão os campos afetados.

Com o uso de REPLACE, é possivel saber qual foi a operação (Insert ou Update) , pelo numero de ROWS afetados, 1 – INSERT , 2 – REPLACE porque ele deleta antes de inserir.

Té outra!!!

3 Responses

  1. Dica mágica essa, muito útil! Sem dúvida vai entrar em uso assim que necessário…

    Parabéns pelo ótimo blog!

  2. Muito interessante!
    Grande abraço!

  3. Ótima Dica, muito funcional!

    como tenho um site de videos, isso me ajudou a fazer a parte de ‘mais vistos da semana’.

    Abraços.

Leave a Reply