function based index as a conditional unique key?
I'm not completely sure that I understand what you mean by "every FK_ID should be unique for that value of OBJ_TYPE". 

If you are trying to say that each FK_ID has to be unique within each OBJ_TYPE, then it sounds like you just want a composite index on (OBJ_TYPE, FK_ID). 

CREATE UNIQUE INDEX idx_uniq_metadata
   ON metadata( obj_type, fk_id );


If, on the other hand, you are trying to say that if OBJ_TYPE = 1 then FK_ID must be unique but you can have duplicate FK_ID values if the OBJ_TYPE is something else, then you'd want a function-based unique index.

CREATE UNIQUE INDEX idx_uniq_metadata2
   ON metadata( (case when obj_type = 1 
                      then fk_id 
                      else null 
                   end) );