trigger – Error: System.LimitException: Too many SOQL queries: 101

Wrote a Trigger on Account Object to retain Account Team members after account owner is changed.
below is the code :_

trigger AccountTriggerKeepTeam on Account (before update) {
    
    IF (Trigger.isBefore && Trigger.isUpdate){
    List<AccountTeamMember> listAcc = [SELECT Id, AccountAccessLevel, AccountId, CaseAccessLevel, UserId, ContactAccessLevel, OpportunityAccessLevel, TeamMemberRole, PhotoUrl, Title FROM AccountTeamMember Where AccountId in : Trigger.new]; 
    List<AccountTeamMember> newlistAcc = new List<AccountTeamMember>();
    
    
    for(Account acc: Trigger.new){
        
        Account oldAccount = Trigger.oldMap.get(acc.Id);
        string oname = acc.Owner.name;
        if(acc.OwnerId != oldAccount.OwnerId){
        
        List<user> u=[Select ProfileId FROM User WHERE Id =:acc.ownerID LIMIT 1];
       String Profileidd=u[0].ProfileId;
    
        

          if(acc.recordtypeid == '0121a000000e9s2AAA')
          {
             if(acc.OwnerId !='0051P0000031A2bQAE'){
            
             
            
//For Lightning - Partner Development Profile
            if (Profileidd =='00e1P000000J68eQAC')
            {
                
        
           AccountTeamMember atmPD = new AccountTeamMember(AccountId=acc.Id,TeamMemberRole="Partner Development", UserId= acc.OwnerId);
           newlistAcc.add(atmPD);
               
           }
           else if (Profileidd =='00e1P000000J68ZQAS') {
            
            AccountTeamMember atmPS = new AccountTeamMember(AccountId=acc.Id,TeamMemberRole="Publisher Sales", UserId= acc.OwnerId);
            newlistAcc.add(atmPS);
           }
           
            for(AccountTeamMember atm: listAcc){
              
                if (atm.TeamMemberRole =='Partner Development')
                {
                    if (Profileidd !='00e1P000000J68eQAC'){
             
                newlistAcc.add(atm);    
                    }
               }
              
            else {
            //if (atm.UserId != acc.OwnerId)
            System.Debug('No Partner Developer or Publisher sales found Found ATM:' +atm);
            newlistAcc.add(atm);}
           }
            String str = JSON.serialize(newlistAcc); 
             //delete team member records if required
            AccountTriggerKeepTeamHandler.retainOldTeamMemberOnOwnerChange(str);   
        }
        
        else if(acc.OwnerId =='0051P0000031A2bQAE'){
            if(acc.OwnerId != oldAccount.OwnerId){
                system.debug('AccountTeamMember records IX sqaure: '+(JSON.serialize(listAcc))); 
    
                
                
                for(AccountTeamMember atm: listAcc){
                 
                    if (atm.TeamMemberRole =='Publisher Sales')
                    {
                   System.Debug('Publisher Sales found:' +atm);
                    newlistAcc.add(atm);    
                       
                   }
                
               }
                String str = JSON.serialize(newlistAcc); 
                 //delete team member records if required
                AccountTriggerKeepTeamHandler.retainOldTeamMemberOnOwnerChange(str);   
            }
        }
    }
   
  
        
            String str = JSON.serialize(newlistAcc); 
             
            AccountTriggerKeepTeamHandler.retainOldTeamMemberOnOwnerChange(str);   
        }
        
    }
    }
    }
    }

Read more here: Source link