Adicionar, modificar ou excluir dados com AL

Concluído

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.