Como alguém que lida regularmente com a atualização do banco de dados de produção para clientes para nossas atualizações de software, digo que a melhor maneira de minimizar erros é fazer as atualizações o mais simples possível.
Se você pode executar uma alteração em todos os registros, em vez de registros específicos, é preferível.
Em outras palavras, se você receber uma lista de IDs de registros que precisam de seu estado alterado, você deve se perguntar por que a atualização está sendo feita no contexto do programa. Pode ser que, dos 10 registros que você precise atualizar, a tabela tenha apenas 10 elementos. Portanto, você deve se perguntar se, conceitualmente, tudo o que está fazendo é atualizar o estado de todos os registros.
Se você pode inserir, é preferível.
O ato de adicionar um registro é independente. Com isso, quero dizer que há apenas um efeito colateral da adição de um registro, e essa é a existência de um registro que não existia antes. Portanto, a menos que você esteja adicionando um registro que não deveria estar lá, não deve haver problemas.
Se você pode evitar a exclusão, é preferível.
Se você estiver executando uma exclusão, está removendo dados que seriam irrecuperáveis sem um backup. Se possível, tente organizar os dados de forma que você possa desativar os registros alterando seu estado em vez de excluir fisicamente o registro. O excesso de dados pode ser colocado em uma partição ou removido totalmente em um momento posterior, quando você tiver certeza de que não há problemas.
Tenha uma política de atualização consistente.
Se você precisar atualizar um registro, uma das várias coisas pode acontecer:
- Seu registro não existe.
- Seu registro existe, mas já foi alterado.
- Seu registro existe e requer a alteração.
Você precisa ter uma política para determinar o curso da ação, caso algo não ocorra conforme o planejado. Por uma questão de simplicidade, você deve ser consistente em todos os aspectos e aplicar esta política em qualquer situação desse tipo, não apenas em tabelas específicas. Isso facilita a recuperação de dados posteriormente. Geralmente, minha política é escrever o script de forma a poder executá-lo mais tarde. Se o script falhar, é bom saber que você pode fazer os ajustes adequados e executar novamente, no entanto, você pode escolher sua própria política que melhor lhe convier.
Backups
Isso de forma alguma o dispensa de executar um backup antes de executar qualquer atualização em um ambiente de produção! Embora, mesmo com um backup, considero uma falha ter que usá-lo. Perder dados não pode ser uma possibilidade, mesmo no pior cenário.
Conclusão
Você nem sempre será capaz de fazer do seu jeito. O esquema da tabela provavelmente não será determinado por você e, como tal, significa que os tipos de atualizações que você espera executar serão complicados e arriscados. Embora, se você tiver alguma opinião a fazer, ajude a manter esses pontos em mente, pois eles fazem atualizações diretas e sem riscos significativos.
Boa sorte!