Couple of points. The line
OPEN C1(:new.MC_CUST_CODE, :new.MC_MCD_SYSID);
doesn't match your cursor declaration. The declaration also has a division code and two dates. Even when you fix this though, you will likely still have an error on your cursor. I could be wrong, but a trigger on a table is not allowed to perform SQL on itself, even if it is a select. The reason for this is because of possibly starting a never ending loop.
From the error message you are trying to raise, why can you not define the appropriate referential integrity rules to enforce unique keys?