Modificar registros com DML
Objetivos de aprendizagem
Depois de concluir esta unidade, você vai:
- Compreender como usar a Grade de consulta no Console do desenvolvedor para manipular diretamente os registros de dados.
- Entender como usar DML para manter os dados no banco de dados.
- Ser capaz de identificar duas formas de escrever comandos DML.
Gerenciar dados no Console do desenvolvedor
Até agora, vimos como usar o Console do desenvolvedor para consultar dados usando SOQL e SOSL. Mas talvez você não tenha reparado que o painel Query Results mostrado no Console do desenvolvedor não mostra apenas os resultados; ele também funciona como grade de consulta. É possível clicar na grade de resultados e usar os botões abaixo dela para inserir, atualizar ou excluir dados.
Vamos tentar fazer isso.
- Em Configuração, selecione Seu nome > Console do desenvolvedor para abrir o Console do desenvolvedor.
- No Developer Console, clique na guia Editor de consulta no painel inferior.
- Exclua o código existente e insira o seguinte trecho:
SELECT Id, Name, Industry FROM Account
- Clique em Executar. Os resultados da consulta mostram todas as contas da organização, junto com a contagem do total de linhas. Repare nesse valor.
- Clique em Insert Row. Uma nova linha é adicionada ao topo da grade.
- Clique duas vezes nessa nova linha para inserir um nome e um setor, mas deixe o valor de ID em branco.
- Clique em Save Rows. Observe que um valor é automaticamente exibido na coluna Id. Lembre-se: a ID é a chave primária e esse valor é gerado pelo sistema. Repare também que o total de linhas exibido ainda é o valor original.
- Clique em Refresh Grid. Você percebeu que a contagem do total de linhas aumentou em um? Nada mal essa ferramenta, não é?
Como desenvolvedores, sabemos que às vezes você precisa gerenciar os dados rapidamente e queremos garantir que esse processo é o mais fácil possível. Imaginamos que ele seja bem melhor do que digitar um demonstrativo INSERT, UPDATE ou DELETE.
Também é possível usar os botões no canto inferior direito dos resultados da consulta para acessar os registros diretamente no Salesforce. Vá em frente e faça o teste.
O que é DML?
Como você já aprendeu na primeira unidade, o Salesforce usa SOQL para consultar dados, mas quando se trata de gerenciar os dados, ele usa DML.
Como desenvolvedor .NET, você usa principalmente o SQL para consultar e gerenciar os dados; então, pode parecer estranho usar outra linguagem. Mas você descobrirá que trabalhar com os comandos de DML no Salesforce é muito mais fácil do que usar os equivalentes em SQL.
Como o Force.com está fortemente integrado, você pode ir direto ao ponto da manipulação de dados sem ter de se preocupar com o gerenciamento de uma fonte de dados. É por isso que é tão fácil trabalhar com o DML.
Demonstrativos DML
Confira a tabela abaixo para ver quais demonstrativos DML estão disponíveis. Alguns você provavelmente já conhece e o funcionamento deles é bem parecido com o que você esperaria. Para saber mais, consulte o Developer’s Guide.
Demonstrativo | Descrição |
---|---|
inserir | Insere um novo registro. |
atualizar | Atualiza um registro existente. |
inserir e atualizar | É uma operação especial que cria novos registros e atualiza os registros em uma única instrução. Essa operação usa um campo especificado para determinar a presença dos objetos existentes ou o campo de ID, caso nenhum campo seja especificado. |
excluir | Exclui um registro existente. |
cancelar exclusão | Restaura um ou mais dos registros existentes que estão na lixeira. |
mesclar | É outra operação especial que pode mesclar até três registros que pertençam ao mesmo tipo de objeto em um desses registros. Depois disso, exclui os outros registros e reassocia quaisquer registros relacionados. |
Duas formas de executar DML
No Apex, é possível executar instruções DML de duas formas.
- Usando a própria instrução: você já viu esse método na unidade de SOSL em que inserimos dados de conta e contato. Esse é o método mais fácil. Caso você não se lembre, veja abaixo um trecho de código da unidade SOSL. Uma única conta foi inserida usando a instrução DML insert.
// Add Account Account acct = new Account( Name='Test Account', Phone='(225)555-8989', NumberOfEmployees=10, BillingCity='Baton Rouge'); insert acct;
- Usando os métodos de classe de banco de dados: a vantagem de usar o método de classe de banco de dados é que você tem acesso ao parâmetro opcional
allOrNone
para especificar se a operação pode ser parcialmente bem-sucedida. Quando esse parâmetro é definido como false, caso ocorra um erro num conjunto parcial de registros, os registros bem-sucedidos serão confirmados. Serão retornados erros referentes aos registros com falha. Além disso, com a opção de sucesso parcial, nenhuma exceção é gerada. Por exemplo, para criar uma conta com o parâmetroallOrNone
definido como false e retornar as informações de êxito ou falha em uma matriz, o resultado ficaria desta forma.// Add Account Account acct = new Account( Name='Test Account', Phone='(225)555-8989', NumberOfEmployees=10, BillingCity='Baton Rouge'); Database.SaveResult[] results = Database.insert(acct, false);
Quero saber mais
Por padrão, o parâmetro allOrNone é definido como true, o que significa que o método Database se comporta como seu equivalente em DML e gera uma exceção se uma falha é encontrada. Confira os documentos oficiais para saber mais.
Se quiser se tornar um astro do DML, curse o módulo Banco de dados e noções básicas do Apex. Ele contém mais informações sobre como inserir registros com sucesso parcial e como inserir registros relacionados.