I created the Oracle Materialized View below:
CREATE MATERIALIZED VIEW MyMV
REFRESH COMPLETE ON DEMAND
AS
SELECT t1.*
FROM table1 t1, table2 t2 where t1.id=t2.id;
The table1 has a primary key and the MV was created succesfully but the primary key was not created in the materialized view table.
Is there any other way to create MVs with primary keys?
it's because your materialized view is based on two tables, if you create your view based on a single table with a primary key, then the primary key is created on you Materialized view. You can still create the index afterwards if you need one:
EDIT
create a primary key instead of the unique index: