i believe the mutating issue is when you try to update from anything other than the old; or new:
you want to avoid that.
it's not clear what you are trying to update; with no DDL, we can only assume all the columns referenced belong to the MODEL_CODE table the trigger seems to be defined on..
old: would be empty/blank for INSERT commands.
new: would be empty/blank for DELETE commands.
it looks to me like there is no reason whatsoever to try and use the other table USER_ID
CREATE OR REPLACE TRIGGER TRG_IUD
AFTER INSERT OR DELETE OR UPDATE
OF CODE,DESC
ON MODEL_CODE
REFERENCING OLD AS OLD
FOR EACH ROW
BEGIN
UPDATE UID SET DATE_SET = current_timestamp
WHERE UID_ID = :old.code;
END;
Lowell