Skip to content
Arthur van de Vondervoort edited this page Dec 14, 2024 · 1 revision

Temporary records should not trigger table triggers.

This rule raises a diagnostic when triggers (Insert, Modify, Delete, DeleteAll, ModifyAll) or the Validate method are executed on temporary record variables. Executing these triggers on temporary records causes the temporary scope to no longer apply, which can result in unintended database changes.

Example

procedure TempSalesHeader(CustomerNo: Code[20])
var
    SalesHeader: Record "Sales Header" temporary;
begin
    SalesHeader.Init();
    SalesHeader.Validate("Sell-to Customer No.", CustomerNo);  // Temporary records should not trigger the table triggers.
    SalesHeader.Insert(true);                                  // Temporary records should not trigger the table triggers.
end;

The rule does not raise a diagnostic if the table object itself is defined as temporary, as triggers in such tables are expected to be implemented safely.

procedure CreateDimensionSetEntryBuffer(DimensionCode: Code[20]; DimensionValueCode: Code[20])
var
    DimensionSetEntryBuffer: Record "Dimension Set Entry Buffer";
begin
    DimensionSetEntryBuffer.Init();
    DimensionSetEntryBuffer.Validate("Dimension Code", DimensionCode);
    DimensionSetEntryBuffer.Validate("Dimension Value Code", DimensionValueCode);
    DimensionSetEntryBuffer.Insert(true);
end;

table 5489 "Dimension Set Entry Buffer"
{
    Caption = 'Dimension Set Entry Buffer';
    TableType = Temporary;

    fields
    {
Clone this wiki locally