Blog TreinaWeb
Webstandards e Programação Web e Desktop

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!



2 respostas para “Insert ou update no Mysql”

  1. Fábio disse:

    show !

  2. jones disse:

    show [2]

Comente

SEO Powered by Platinum SEO from Techblissonline