ListofSolvedTriggerExample:-
1.)UpdateChildObjectbasedonParentObjectfield.
triggerupdaetContacttypeonAccount(afterupdate){
Set<ID>accIds=newSet<Id>();
List<Contact>updateCon=newList<Contact>();
for(AccountaccObj:TRigger.new)
{
accIds.add(accObj.Id);
}
List<Contact>conLIst=newList<Contact>([SelectID,contact_type__c, account.account_type__c from
ContactwhereAccountIDIN:accIds]);
for(ContactconObj:conList)
{
conObj.Contact_Type__c=conObj.account.Account_Type__c; updateCon.add(conObj);
}
updateupdateCon;
2.)updateafieldonparentObjectbasedonchildobject.
triggerupdateAccountTypeonContact(Afterinsert,afterupdate){ Set<Id>accIds=newSet<Id>();
for(Contactcon:Trigger.new)
{
accIds.add(con.accountId);
}
Map<ID,account>accMap=newMap<ID,account>([SelectID,Account_type__cfromaccount
whereIDIN:accIds]);
for(ContactconObj:Trigger.new)
{
accMap.get(conObj.AccountId).Account_Type__c=conObj.Contact_Type__c;
}
updateaccMap.values();
3.)CreateaTaskRelatedtoaccount&Sobjects.
triggerInsertMyTaskonAccount(afterinsert){
List<Task>insertTask=newList<Task>();
for(Accountacc:Trigger.new)
{
Tasktsk=newTask(); tsk.Subject='Test';
tsk.whatID=acc.id; tsk.status='completed';
insertTask.add(tsk);
}
insertinsertTask;
}
4.)UpdateafieldonsameObject.
triggerIndustryonAccount(beforeinsert,beforeupdate){
for(AccountAcct:trigger.new) Acct.Industry='Banking';
5.)SendEmailwhenChidrecordfieldwillupdatebasedonParentcreteria.
triggerupdateContactEmailonAccount(afterupdate){
Set<ID>accIds=newSet<Id>();
List<contact>conUp=newList<contact>();
For(Accountacc:Trigger.new)
{
if(acc.Rating=='Hot') accIds.add(acc.Id);
}
List<contact>conList=newList<Contact>([SelectId,Email,accountIdfromContactwhere
AccountIDIN:accIds]); for(Contactcon:ConList)
{
con.Email='[email protected]'; conUp.add(con);
}
updateconUp;
Messaging.SingleEmailMessagemail=newMessaging.SingleEmailMessage();
String[]toAddresses=newString[]{'[email protected]'};
mail.setToAddresses(toAddresses); mail.Subject='UpdateContact';
mail.PlainTextBody='YourContacthasbeenUpdated';
Messaging.sendEmail(newMessaging.SingleEmailMessage[]{mail});
}
6.)SendEmailwhenParentrecrodfieldwillupdatebasedonthecilderecord.
triggerupdateAccountTypeonContact(Afterinsert,afterupdate){ Set<Id>accIds=newSet<Id>();
for(Contactcon:Trigger.new)
{
accIds.add(con.accountId);
}
Map<ID,account>accMap=newMap<ID,account>([SelectID,Account_type__cfromaccount
whereIDIN:accIds]);
for(ContactconObj:Trigger.new)
{
accMap.get(conObj.AccountId).Account_Type__c=conObj.Contact_Type__c;
}
updateaccMap.values();
Messaging.SingleEmailMessagemail=newMessaging.SingleEmailMessage();
String[]toAddresses=newString[]{'[email protected]'};
mail.setToAddresses(toAddresses); mail.Subject='UpdateContact';
mail.PlainTextBody='YourAccounthasbeenUpdated';
Messaging.sendEmail(newMessaging.SingleEmailMessage[]{mail});
7.)CreateRollupSummaryonparent(Lookuprelatelship)
triggerrollUpSummaryofContactonContact(afterinsert,afterupdate,afterdelete,after
undelete)
{
Set<Id>accIds=newSet<Id>();
List<Account>accUp=newList<Account>();
if(Trigger.isInsert||Trigger.isupdate||Trigger.isundelete)
{
for(Contactcon:trigger.new)
{
accIds.add(con.accountId);
}
}
if(Trigger.isDelete)
{
for(Contactcon:trigger.Old)
{
accIds.add(con.accountId);
}
}
List<account>accList=newList<account>([SelectId,Number_of_Contacts__c,(SelectID
fromContacts)fromAccountwhereIDIN:accIds]);
for(accountacc:accList)
{
acc.Number_of_Contacts__c=acc.Contacts.size(); accUp.add(acc);
}
updateaccUp;
}
8.)UpdateacountObjectfieldbasedonthetask. triggerupdaetAccountCheckonTask(AfterInsert,AfterUpdate){
Set<ID>accIds=newSet<ID>();
List<Account>updateAcc=newList<account>();
StringstrPr=Account.SobjectType.getDescribe().getKeyPrefix();
for(Tasktsk:Trigger.new)
{
StringStr=tsk.WhatID; if(Str!=null&&str.StartsWith(strPr))
accIds.add(str);
}
/*for(tasktskObj:Trigger.new)
{
if(tskObj.Status=='Completed')
accIDs.add(tskObj.WhatID);
}*/
//NewStepsforthis
List<account>accList=newList<account>([SelectID,Premium_Account__c fromaccount
WhereIDIN:accIDs]);
for(AccountaccObj:accList)
{
accObj.Premium_Account__c=True; updateAcc.add(accObj);
}
updateupdateAcc;
}
9.)UpdateGrandParentfieldbasedontheGrandChildactivity.
triggerupdateAccBySalesonTask(afterinsert,afterupdate)
{
StringstrSalesKey=Sales_Forecast__c.sObjectType.getDescribe().getKeyPrefix();
Set<Id>tskWhatIds=newSet<ID>();
Set<Id>oppIds=newSet<Id>();
List<Opportunity>oppUp=newList<Opportunity>();
for(tasktsk:Trigger.new)
{
StringstrSales=tsk.WhatID;
if(strSales!=null&&strSales.startsWith(strSalesKey))
{
tskWhatIds.add(tsk.WhatID);
}
}
List<Sales_Forecast__c> salesList = new List<Sales_Forecast__c>([Select Id,
Opportunity__cfromSales_Forecast__cWhereIDIN:tskWhatIds]);
for(Sales_Forecast__csalesObj:salesList)
{
if(salesObj.Opportunity__c!=null) oppIds.add(salesObj.Opportunity__c);
List<Opportunity>oppList=newList<Opportunity>([SelectId,Name,TYpefrom
OpportunityWHereIDIN:oppIds]);
for(OpportunityOpp:oppList)
{
Opp.Type='NewCustomer'; oppUp.add(opp);
}
updateoppUp;
10.)CreateValidationruleonsameObject.
triggerValidateTaskonTask(beforeinsert,beforeupdate)
{
for(tasktsk:Trigger.new)
{
if(tsk.Type==null) tsk.addError('PleaseFillType');
}
11.)CreatevalidationruleonChildobjectbasedontheParentObject.
triggerOppValidateonOpportunity(beforeinsert,beforeupdate)
{
for(OpportunityOpp:Trigger.new)
{
if(opp.AccountId!=null&&opp.Account.Premium_Account__c!=True)
opp.addError('Youcannotsaveopp');
}
}
12.)CrateValidaionruleonTaskbasedontheparentobject. SameasAbove
13.)CreateFeedItem&commentbasedontheaccount/Sobject.
triggerInsertFeedItemwithCommentsonContact(afterinsert,afterupdate)
{
List<FeedItem>fItemInsert=newList<FeedItem>();
List<FeedComment>commentsInsert=newList<FeedComment>();
For(Contactcon:trigger.new)
{
FeedItemfItem=newFeedItem();
fItem.ParentID=con.ID;
fItem.Body='NewContacthasbeenCreated'; fItemInsert.add(fItem);
}
insertfItemInsert;
For(FeedItemFd:fItemInsert)
{
FeedCommentcomments=newFeedComment();
comments.FeedItemId=fd.Id; comments.CommentBody='Thanks';
commentsInsert.add(comments);
}
insertcommentsInsert;
14.)CreatetaskrealtedtochildobjectbasedontheParentObject.
triggerinsertTaskandCaseonAccount(afterinsert){
List<Case>insertCS=newList<Case>();
List<Task>inserttsk=newList<Task>();
for(Accountacc:trigger.new)
{
Casecs=newCase();
cs.Subject='Test'+acc.Name;
cs.accountID=acc.Id; cs.Status='Open';
cs.Origin='Phone';
insertCS.add(cs);
}
insertinsertCS;
for(CasecsObj:insertCS)
{
tasktsk=newtask(); tsk.Subject='TestTask';
tsk.Status='Open'; tsk.Priority='Normal';
tsk.whatId=csObj.ID;
insertTsk.add(tsk);
}
insertinsertTsk;
}
15.)Recordcannotdelete.
triggerNotdeletecontactonContact(beforedelete){
for(Contactcon:Trigger.Old)
{
if(con.Phone==null) con.addError('Youcannotdelete');
16.)UpdateTaskbasedonParentobject.
triggerupdateTaskBasedonCaseonAccount(afterinsert,afterupdate){
Set<Id>accIds=newSet<Id>();
Set<Id>caseIds=newSet<Id>(); List<Task>updateTsk=newList<Task>();
for(AccountaccObj:Trigger.new)
{
if(accObj.NumberofLocations__c==0) accIds.add(accObj.Id);
} List<Case>csList=[SelectId,accountID,SubjectfromCasewhereaccountIdIn:accIds
ANDSubject='TestInsertCase&Task'LIMIT1];
for(CasecsObj:csList)
{
if(csObj.Subject=='TestInsertCase&Task') caseIds.add(csObj.Id);
}
List<Task>tskList=[SelectID,StatusfromtaskwherewhatIdIN:caseIdsANDStatus=
'Open'];
for(TasktskObj:tskList)
{
tskObj.Status='Completed';
updatetsk.add(tskObj);
}
updateupdatetsk;