LC0078 - StefanMaron/BusinessCentral.LinterCop GitHub Wiki
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
{