Blog do TreinaWeb!

Blog do TreinaWeb

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

Insert ou update no Mysql


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!

Tags: MySql

  • Fábio

    show !

  • jones

    show [2]

  • Stevan

    Simples, mas de muita utilidade

    show[3]