Making a column unmodifiable/non-updatable after its row's initial creation?
GRANTS

Oracle has column level GRANT capabilities.

Therefore, the answer you seek:
Don't GRANT the update privilege on that column of that table to that user.

grant insert,select,delete on my_table to some_role;
grant update (updatable_column, upd_ts) on my_table to some_role;
grant some_role to single_user;


VPD/FGAC

Note: Virtual Private Database (VPD) and Fine Grain Access Control (FGAC) require Enterprise Edition (EE);  18c XE also supports VPD/FGAC

VPD allows you to add a WHERE clause based specific conditions.  In this example, the function always_false generates the appropriate conditions.

create function always_false return varchar2 deterministic
as
begin
  if sys_context('USERENV', 'SESSION_USER' ) = 'SINGLE_USER'
  then
    return '1=0'
  end if;

  return null; -- does not apply a rule
end;
/

begin
  dbms_rls.add_policy (
     object_name       =&gt; 'MY_TABLE'
    ,policy_name       =&gt; 'NO_CRT_TS'
    ,policy_function   =&gt; 'ALWAYS_FALSE'
    ,statement_types   =&gt; 'UPDATE'
    ,enable            =&gt; 'TRUE'
    ,static_policy     =&gt; 'TRUE'
    ,sec_relevent_cols =&gt; 'CRT_TS'
  );
end;
/


note:  I haven't tested this code

TRIGGER

I wouldn't use TRIGGER to enforce this because triggers can be by-passed.