Wann sollten Vorher- und Nachher-Auslöser in Salesforce verwendet werden?

Einführung

Ein Trigger ist ein Apex-Code, der vor oder nach dem Auftreten von DML-Ereignissen ausgeführt wird. Ein Trigger ist eine Klasse hinter den Kulissen und hat Variablen wie New, NewMap, Old und OldMap. Auslöser sollten sein massiv. Es sollte sowohl für einzelne Datensätze als auch für mehrere Datensätze auf die gleiche Weise funktionieren.

Konzept der Auslöser in Salesforce

Ein Auslöser ist eine Apex-Komponente, die automatisch ausgeführt wird, sobald DML auf ein beliebiges Objekt ausgelöst wird. Angenommen, wir haben vor dem Einfügen und vor dem Aktualisieren von Ereignissen einen Trigger in das Account-Objekt geschrieben. Wenn der Benutzer dann versucht, den Datensatz des Kontos einzufügen oder zu aktualisieren, wird der Trigger basierend auf der bereitgestellten Bedingung ausgelöst.

Dies bedeutet, dass Trigger objektspezifisch (Trigger können jeweils für ein einzelnes Objekt erstellt werden) und ereigniszentriert sind.

Arten von Auslösern in Salesforce

Wir haben hauptsächlich zwei Arten von Auslösern in Salesforce

1. Vor Trigger

Dies wird hauptsächlich verwendet, wenn wir die Werte eines Datensatzes aktualisieren oder validieren möchten, bevor der Datensatz in der Datenbank gespeichert wird. Das bedeutet, dass der erste Datensatz validiert und dann vor dem Trigger gespeichert wird. Wir müssen keine DML-Ereignisse vor dem Trigger schreiben.

2. Nach Trigger

Diese Art von Trigger wird normalerweise verwendet, wenn Daten aufgrund einer Änderung in einem separaten Objekt aktualisiert werden müssen.

Sie werden ausgeführt, nachdem letzte Änderungen an der Datenbank vorgenommen wurden.

Nachdem der Trigger ausgelöst wurde, sobald DML in einem beliebigen Objekt festgeschrieben wurde, sind die Datensätze, die den After-Trigger auslösen, schreibgeschützt.

Wann sollten Vorher-/Nachher-Auslöser in Salesforce verwendet werden?

Wenn wir die Daten validieren oder aktualisieren oder Werte aufzeichnen müssen, bevor der Datensatz gespeichert wird, verwenden Sie Before Trigger. Wenn wir auf die vom System festgelegten Feldwerte wie das Feld LastModifiedDate zugreifen und die Änderungen in anderen Datensätzen beeinflussen möchten, verwenden Sie After Trigger.

Die Datensätze, die die Datenbankoperation initiiert haben, sind in After Trigger schreibgeschützt. Wenn dieser Datensatz die Ausführung des Triggers initiierte, konnten wir keine Feldwerte in After Trigger ändern. Beispiel: Wir haben einen Trigger für das Objekt „Account“ mit dem DML-Ereignis „After update“ und möchten den Feldwert für das Objekt „Account“ aktualisieren. In diesem Fall können Benutzer den Feldwert nicht ändern, da dies im schreibgeschützten Modus der Fall wäre. Verwenden Sie in diesem Szenario also Before Trigger anstelle von After Trigger.

Beispiele

Beispiel 1

trigger ContactDeletion on Contact (before delete) { //Trigger.old enthält eine Liste von Kontakten, die gelöscht werden für(Contact cc : Trigger.old){ if(cc.AccountId != null){ cc.addError('Sie können nicht löschen Kontakt mit zugehörigem Konto'); } } }

 

Beispiel 2

AccOppTrigger auf Konto auslösen (nach dem Einfügen) {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. heute().addDays(15)); oppRec.add (opp); } } if(!oppRec.isEmpty()){ oppRec einfügen; } }

 

Hinterlassen Sie eine Nachricht

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahren Sie, wie Ihre Kommentardaten verarbeitet werden.