You need to sign in to do that
Don't have an account?

governor limit
Hi all,
I have below code . Can I update anything to avoid governor limit ?
trigger PenaltyNoticeReviewTrigger on Penalty_Notice_Review__c (before insert) {
try
{
if (Trigger.isInsert) {
if(trigger.isBefore){
for(Penalty_Notice_Review__c item :Trigger.New){
// get list of Penalty_Notice_Review__c
List<Penalty_Notice_Review__c> penaltyNotices = [SELECT Id,Name,Penalty_Notice__c,Review_Number__c FROM Penalty_Notice_Review__c where Penalty_Notice__c =: item.Penalty_Notice__c];
if(penaltyNotices.size()==0)
item.Review_Number__c = 1;
else
item.Review_Number__c = penaltyNotices.size() + 1;
}
}
}
}
catch (Exception ex)
{
System.debug('Error Occurred:' + '[' + ex.getMessage() +' ]');
throw new FADMSException(ex.getMessage());
}
I have below code . Can I update anything to avoid governor limit ?
trigger PenaltyNoticeReviewTrigger on Penalty_Notice_Review__c (before insert) {
try
{
if (Trigger.isInsert) {
if(trigger.isBefore){
for(Penalty_Notice_Review__c item :Trigger.New){
// get list of Penalty_Notice_Review__c
List<Penalty_Notice_Review__c> penaltyNotices = [SELECT Id,Name,Penalty_Notice__c,Review_Number__c FROM Penalty_Notice_Review__c where Penalty_Notice__c =: item.Penalty_Notice__c];
if(penaltyNotices.size()==0)
item.Review_Number__c = 1;
else
item.Review_Number__c = penaltyNotices.size() + 1;
}
}
}
}
catch (Exception ex)
{
System.debug('Error Occurred:' + '[' + ex.getMessage() +' ]');
throw new FADMSException(ex.getMessage());
}
Take SOQL query outside for loop:
trigger PenaltyNoticeReviewTrigger on Penalty_Notice_Review__c (before insert) {
try
{
if (Trigger.isInsert) {
if(trigger.isBefore){
set<ID> ids= new set<ID>();
for(Penalty_Notice_Review__c item :Trigger.New){
// get list of Penalty_Notice_Review__c
ids.add(item.Penalty_Notice__c);
}
List<Penalty_Notice_Review__c> penaltyNotices = [SELECT Id,Name,Penalty_Notice__c,Review_Number__c FROM Penalty_Notice_Review__c where Penalty_Notice__c IN: IDS];
for(Penalty_Notice_Review__c item1:trigger.new)
{
if(penaltyNotices.size()==0)
{
item.Review_Number__c = 1;
}
else
{
item.Review_Number__c = penaltyNotices.size() + 1;
}
}
All Answers
Check this link for apex best practices to overcome the governor limits https://developer.salesforce.com/page/Apex_Code_Best_Practices
Take SOQL query outside for loop:
trigger PenaltyNoticeReviewTrigger on Penalty_Notice_Review__c (before insert) {
try
{
if (Trigger.isInsert) {
if(trigger.isBefore){
set<ID> ids= new set<ID>();
for(Penalty_Notice_Review__c item :Trigger.New){
// get list of Penalty_Notice_Review__c
ids.add(item.Penalty_Notice__c);
}
List<Penalty_Notice_Review__c> penaltyNotices = [SELECT Id,Name,Penalty_Notice__c,Review_Number__c FROM Penalty_Notice_Review__c where Penalty_Notice__c IN: IDS];
for(Penalty_Notice_Review__c item1:trigger.new)
{
if(penaltyNotices.size()==0)
{
item.Review_Number__c = 1;
}
else
{
item.Review_Number__c = penaltyNotices.size() + 1;
}
}