Adicionar, modificar ou excluir dados com AL
Frequentemente, é solicitado que os desenvolvedores modifiquem os dados no banco de dados usando o código AL.
As seguintes instruções permitem a modificação de dados:
Insert
Modify e ModifyAll
Delete e DeleteAll
Instrução Insert
A instrução Insert é usada para adicionar novos registros ao banco de dados.
Antes de inserir dados, você precisa definir os valores para cada campo que deseja armazenar. O comando Insert, juntamente com os comandos modify e delete, aceitam o parâmetro booliano RunTrigger. Por padrão, o valor do parâmetro é false.
Se o parâmetro for false, o comando Insert não executará o gatilho OnInsert no nível da tabela. Você precisa definir o valor como true para que o gatilho OnInsert seja executado.
Esta ação é incluída por motivos de desempenho.
Esse processo é consistente com a atribuição de um valor a um campo porque, de forma semelhante, ele não executa o gatilho OnValidate do campo.
var
customer: Record Customer;
begin
customer.Init();
customer."No." := '4711';
customer.Name := 'John Doe';
customer.Insert(true);
Embora o gatilho OnInsert não seja executado por padrão, os eventos OnBeforeInsert ou OnAfterInsert sempre são executados.
Instruções Modify e ModifyAll
Para alterar os valores de um registro existente, você precisa recuperar o registro primeiro. Em seguida, você pode atualizar os valores e usar a função Modify para armazenar as alterações no banco de dados.
customer.Get('4711');
customer.Name := 'Richard Roe';
customer.Modify();
Semelhante à função Insert, você precisa fornecer um valor true para a função Modify executar o gatilho OnModify no nível da tabela.
Se desejar atualizar vários registros simultaneamente, você poderá usar a função ModifyAll. A função ModifyAll aceita o parâmetro RunTrigger como o terceiro parâmetro da função.
ModifyAll(Field, NewValue, [RunTrigger]
No exemplo a seguir, todos os registros em que o campo Salesperson Code é igual (PS) são recuperados primeiro e, em seguida, todos os registros recuperados são atualizados com o valor (JR).
customer.SetRange("Salesperson Code", 'PS');
customer.ModifyAll("Salesperson Code", 'JR');
As funções Modify e ModifyAll não solicitam confirmação; a modificação é executada sem aviso.
Instruções Delete e DeleteAll
Assim como a função Modify, você precisa recuperar um registro do banco de dados antes de excluir um registro. As funções Delete e DeleteAll aceitam o parâmetro RunTrigger.
customer.Get('4711');
customer.Delete(true);
A função DeleteAll remove vários registros simultaneamente.
customer.SetRange("Salesperson Code", 'PS');
customer.DeleteAll();
As funções Delete e DeleteAll não solicitam confirmação; a exclusão é concluída sem aviso.