Wooo..Sorry. I completely misunderstood your initial question. I thought you wanted to implement "delete cascade" instead of triggers..rather than the other way around!
I'm not much of a developer..but that seems like a bad idea. You're reinventing the wheel..and setting yourself for mutation problems.
The "select version_id from grp where grp_id = : old.grp_id" in the trigger is obviously causing the mutating error. Don't select it, rather find a way around it..can't you use the old version_id directly?
actually this version_id is unique .
now the problem is delete_cascade is inefficient in my scenario ...
i have 4000 tables each table is something like score_ver1
score_ver2 . when i try to delete grp from this table . database will start looking at all these 4000 tables . actually based on record that is to be deleted . i can tell where child tables are present
so i am dynamically selecting these tables and deleteing coresponding records in them.
but as you said ... below select stmt in trigger might be causing mutation .
select version_id from grp where grp_id = ld.grp_id