Conceito e mecanismo
O desenvolvimento começa por definir o que cada registo representa. Uma referência externa só identifica corretamente uma entidade dentro do seu contexto: o mesmo número pode existir em dois fornecedores. External ID e Unique são configurações distintas; correspondência não garante unicidade. Antes de aplicar uma restrição, reconciliar duplicados e confirmar se são realmente a mesma entidade. Relações também representam decisões de ciclo de vida. Master-detail associa o detail ao master e permite agregados nativos, mas a dependência de eliminação pode contrariar retenção independente. Uma relação lookup exige igualmente rever o comportamento de remoção e os controlos necessários. Labels apresentados ao utilizador não substituem API names usados pelo código.
Aplicação guiada
Numa aplicação de acompanhamento de liquidações, desenhar primeiro pedidos, intervenientes e evidências. Identificar quais os dados que têm de sobreviver ao encerramento ou remoção do pedido. Registar a origem de cada chave e testar colisões entre sistemas. Um sObject criado em memória ainda não está persistido: construir a instância, validar os campos e executar DML são passos diferentes. Na revisão técnica, pedir exemplos de criação, alteração, duplicação e remoção. Confirmar os nomes de API nos metadados e documentar decisões que afetam relatórios e automações. Esta análise reduz correções tardias durante importações e evita usar o nome de um cliente como identidade técnica.
Dois prestadores enviam a referência 812 para pedidos diferentes. Uma chave que inclua a origem pode distinguir as entidades; aplicar Unique apenas ao número rejeitaria um pedido legítimo. A reconciliação deve preservar evidência da decisão.
Armadilhas comuns
Confundir External ID com Unique; escolher master-detail apenas para obter um total; inferir nomes de API a partir de labels; tratar new sObject como gravação.
Tópicos relacionados: Coleções e escolha entre configuração e código · Consultas, DML e resultados de erro · Triggers, limites e processamento assíncrono
Definir identidade e ciclo de vida antes de escrever lógica. Separar representação em memória, schema e persistência.
Referência: Differences between External ID and Unique field settings · Platform Developer guide Summer 25