Blog do TreinaWeb!

Blog do TreinaWeb

Dicas, notícias e informações sobre cursos, programação, webstandards e desenvolvimento web.

Posts com a Tag ‘MySql’



  • Insert ou update no Mysql


    28 de April de 2009

    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!