Есть ли у вас опыт разработки? С какими записями вы имеете дело? Если у вас есть более 10 000 возможностей, то вы очень быстро столкнетесь с проблемами!
(непроверенный) код, приведенный ниже, должен иметь смысл, если вы разработчик, но помните, что вы можете выполнять только 20 запросов SOQL, что позволяет 19 обновлений вызовов с 200 записями на вызов - так что это будет работать, только если у вас максимум 3800 возможности с любым заданным значением Y. Если вам нужно больше, вам нужно написать класс, который использует интерфейс Batchable и запустить его из триггера - вам нужно будет пройти через список значений X перед вызовом execute для него так что вы можете использовать их в запросе (см. здесь для документов на Batch Apex .
trigger LeadAfterInsert on Lead (after insert)
{
// assuming string for the type of fields X & Y
set<string> setXValues = new set<string>();
list<Opportunity> liOpptysToUpdate = new list<Opportunity>();
for(Lead sLead : trigger.new)
{
setXValues.add(sLead.FieldX);
}
for(Opportunity [] sOpportunityArr : [select Id, FieldZ, FieldY
from Opportunity
where FieldY in : setXValues
limit 1000])
{
for(Opportunity sOpportunity : sOpportunityArr)
{
// field logic here, e.g.
if(sOppty.FieldY != 0)
{
sOppty.FieldZ ++;
}
liOpptysToUpdate.add(sOppty);
// can only update 200 records at once so we check the list size here
if(liOpptysToUpdate.size() == 200)
{
update liOpptysToUpdate;
liOpptysToUpdate.clear();
}
}
}
// deal with any stragglers
if(liOpptysToUpdate.size() > 0)
{
update liOpptysToUpdate;
}
}