默認情況下,Apex在系統上下文中執行。Apex代碼可以訪問所有對象和字段
僅在絕對確定使用我們的點擊自動化工具之一無法完成同一件事時,纔想使用觸發器。
改正後的代碼
在Lightning Platform中,沒有任何應用程序或會話變量。
如果您需要數據在類之間持久化,則確實有靜態變量
在Lightning Platform的世界中,靜態變量只能將信息保留在單個執行上下文中,儘管可以使用其他選項來維護觸發器調用之間的數據
Write an Apex trigger that modifies Account fields before inserting records
AccountTriggerHandler.apxc
public class AccountTriggerHandler {
public static void CreateAccounts (List<Account> accList)
{
for(Account acc : accList)
{
if(acc.ShippingState!=acc.BillingState)
{
acc.ShippingState = acc.BillingState;
}
}
}
}
AccountTrigger.apxt
trigger AccountTrigger on Account (before insert)
{
if (Trigger.isBefore && Trigger.isInsert) {
AccountTriggerHandler.CreateAccounts(Trigger.new);
}
}
AccountTriggerTest.apxc
@isTest
public class AccountTriggerTest {
@isTest static void TestCreate200Records()
{
List<Account> accts = new List<Account>();
for(Integer i=0; i < 200; i++) {
Account acct = new Account(Name='Test Account ' + i, BillingState = 'CA');
accts.add(acct);
}
Test.startTest();
insert accts;
Test.stopTest();
System.assertEquals(200, [SELECT Count() FROM Account WHERE ShippingState = 'CA' ]);
}
}