Wanneer gebruiken vóór versus na triggers in Salesforce?

Introductie

Een trigger is een apex-code die wordt uitgevoerd voor of na het optreden van DML-gebeurtenissen. Een trigger is een klasse achter de schermen en heeft variabelen zoals New, NewMap, Old en OldMap. Triggers moeten zijn volumineus. Het zou zowel voor afzonderlijke records als voor meerdere records op dezelfde manier moeten werken.

Concept van triggers in Salesforce

Een trigger is een Apex-component die automatisch wordt uitgevoerd zodra DML op een object wordt geactiveerd. Stel dat we een trigger hebben geschreven op het Account-object voordat gebeurtenissen worden ingevoegd en voordat ze worden bijgewerkt. Als de gebruiker vervolgens het record van het account probeert in te voegen of bij te werken, wordt de trigger geactiveerd op basis van de opgegeven voorwaarde.

Dit betekent dat triggers objectspecifiek zijn (trigger kan op één object tegelijk worden gemaakt) en gebeurtenisgericht.

Typen triggers in Salesforce

We hebben voornamelijk twee soorten triggers in Salesforce:

1. Voor trigger

Dit wordt voornamelijk gebruikt als we de waarden van een record willen bijwerken of valideren voordat het record in de database wordt opgeslagen. Dit betekent dat de eerste record wordt gevalideerd en vervolgens wordt opgeslagen vóór de trigger. We zijn niet verplicht om DML-gebeurtenissen te schrijven vóór de trigger.

2. Na trigger

Dit type trigger wordt meestal gebruikt wanneer gegevens vanwege een wijziging moeten worden bijgewerkt naar een afzonderlijk object.

Ze worden uitgevoerd nadat de laatste wijzigingen in de database zijn aangebracht.

Nadat Trigger is geactiveerd zodra DML is vastgelegd in een object, zijn de records die de After Trigger activeren alleen-lezen.

Wanneer gebruik je Before vs After Triggers in Salesforce?

Als we de gegevens of recordwaarden moeten valideren of bijwerken voordat de record wordt opgeslagen, gebruik dan Before Trigger. Als we toegang willen tot de veldwaarden die door het systeem zijn ingesteld, zoals het veld LastModifiedDate, en om de wijzigingen in andere records te beïnvloeden, gebruikt u After Trigger.

De records die de databasebewerking hebben geïnitieerd, zijn alleen-lezen in After Trigger. Als dat record de uitvoering van de trigger heeft geïnitieerd, kunnen we geen veldwaarden wijzigen in After Trigger. We hebben bijvoorbeeld een trigger op het Account-object met de After update DML-gebeurtenis en we willen de veldwaarde op het Account-object bijwerken. In dit geval kunnen gebruikers de veldwaarde niet wijzigen zoals in de alleen-lezen modus. Gebruik dus Before Trigger in dit scenario in plaats van After Trigger.

Voorbeelden

Voorbeeld 1

trigger ContactDeletion on Contact (vóór verwijderen) {//Trigger.old bevat een lijst met contacten die worden verwijderd voor (Contact cc: Trigger.old) {if(cc.AccountId!= null){ cc.addError('U kunt niet verwijderen contact met een gekoppeld account'); } } }

 

Voorbeeld 2

activeer AccOppTrigger op account (na invoegen) { List oppRec = new List(); for(Account acc: Trigger.new){ if(acc.Industry == 'Banking'){ Opportunity opp = new Opportunity(Name = acc.Name, StageName = 'Prospecting', AccountId = acc.Id, CloseDate = Date. vandaag().addDays(15)); oppRec.add(opp); } } if(!oppRec.isEmpty()){ voeg oppRec in; } }

 

laat een reactie achter

Deze site gebruikt Akismet om spam te verminderen. Ontdek hoe uw reactiegegevens worden verwerkt.