Thiago Domingues:
do link acima:
“REPLACE funciona exatamente como o INSERT, exceto que se um registro antigo na tabela tem o mesmo valor que um novo registro em um índice UNIQUE ou PRIMARY KEY, o registro antigo é deletado antes que o novo registro seja inserido…”
foi isso q eu entendi?
usando o REPLACE o registro antigo é apagado e inserido o novo correto? sendo assim digamos que tenhamos uma pessoa com certo CPF (seu próprio cpf), e tentemos inserir outra pessoa com o mesmo cpf (erro de digitação), ele apaga a pessoa antiga(certa) e insere a nova (errada)? isso nao gera erro de informação?
Você não entendeu errado…o REPLACE é perigoso mesmo!
Mas para não ter nenhum problema com o REPLACE utilize da seguinte maneira:
1- Quando vc esta cadastrando um usuário novo faça com INSERT dessa maneira se houver a tentativa de um cadastro duplicado uma exception será gerada então vc poderá tratá-la.
2- Quando for alterar um cadastro, daí sim utilize REPLACE (em vez do UPDATE), pois naturalmente você vai liberar todos os campos para serem alterarados, exceto o campo CPF (PK), pois o CPF é único e não tem porque alterar (ninguém por meios legais troca o número do cpf). Desta maneira ninguém vai detonar o BD por erro de digitação.
É Claro que existem muitas outras práticas, as tuas necessidades dirão qual é a melhor! 