You need to sign in to do that
Don't have an account?
ExploreForce
MIXED_DML_OPERATION, DML operation on setup object is not permitted after you have updated a non-setup object (or vice versa)
Trigger is thrwing this error: MIXED_DML_OPERATION, DML operation on setup object is not permitted after you have updated
a non-setup object (or vice versa)
trigger PODGroupMemberBeforeInsert on Pod_Group_Member__c (before insert) {
//Map<String,GroupMember> lstGrpMembers=new Map<String,GroupMember>();
set<Id> lstGrpMembers=new set<Id>();
List<Pod_Group_Member__c> podGroupMembers = new List<Pod_Group_Member__c>();
for(GroupMember xGm:[Select UserOrGroupId, GroupId From GroupMember where Group.Name = 'Non-Pod Members'])
{
lstGrpMembers.add(xGm.UserOrGroupId);
}
system.debug(lstGrpMembers);
User aUser = [SELECT id FROM User WHERE Id = :UserInfo.getUserId()];
list<Id> lstgm = new list<Id>();
for(Pod_Group_Member__c xPod: Trigger.new) {
if(lstGrpMembers.contains(xPod.Pod_Member__c))
{
//add to list
lstgm.add(xPod.Pod_Member__c);
}
Pod_Group_Member__c podGrp= new Pod_Group_Member__c();
//podGrp.Pod_Group__c=
podGrp.Pod_Member__c = aUser.Id;
podGroupMembers.add(podGrp);
}
if(lstgm.size()>0)
{
list<GroupMember> lstg=[select UserOrGroupId, GroupId From GroupMember where UserOrGroupId=:lstgm];
delete lstg;
}
database.insert(podGroupMembers,false);
}
Pls suggest solution!
a non-setup object (or vice versa)
trigger PODGroupMemberBeforeInsert on Pod_Group_Member__c (before insert) {
//Map<String,GroupMember> lstGrpMembers=new Map<String,GroupMember>();
set<Id> lstGrpMembers=new set<Id>();
List<Pod_Group_Member__c> podGroupMembers = new List<Pod_Group_Member__c>();
for(GroupMember xGm:[Select UserOrGroupId, GroupId From GroupMember where Group.Name = 'Non-Pod Members'])
{
lstGrpMembers.add(xGm.UserOrGroupId);
}
system.debug(lstGrpMembers);
User aUser = [SELECT id FROM User WHERE Id = :UserInfo.getUserId()];
list<Id> lstgm = new list<Id>();
for(Pod_Group_Member__c xPod: Trigger.new) {
if(lstGrpMembers.contains(xPod.Pod_Member__c))
{
//add to list
lstgm.add(xPod.Pod_Member__c);
}
Pod_Group_Member__c podGrp= new Pod_Group_Member__c();
//podGrp.Pod_Group__c=
podGrp.Pod_Member__c = aUser.Id;
podGroupMembers.add(podGrp);
}
if(lstgm.size()>0)
{
list<GroupMember> lstg=[select UserOrGroupId, GroupId From GroupMember where UserOrGroupId=:lstgm];
delete lstg;
}
database.insert(podGroupMembers,false);
}
Pls suggest solution!
Would suggest you to first insert a user with different profile (pther than system admin) and then use System.runAs() for "database.insert(podGroupMembers,false);" let me know if that helps.
This way you can separate the context and avoid this error.