我们正在使用Oracle SQL Data Modeler来创建新的数据库 . 实际上,我们需要在新的db模式中创建物化视图,以便从另一个模式中提供一些主数据 . 使用Data Modeler创建MV是没有问题的,但我们想在mv上创建一个主键来使用外键 . 有了这个约束,我们希望确保数据的完整性 . 如果我们手动创建整个结构,那么如果我们将其合并到建模器的设计中,我们也会看到主键 . 但是,如果我们将模型与另一个模式(Testenviroment)进行比较,那么将只创建一个唯一的索引并且缺少主键 .

我们尝试使用脚本属性创建主键,但该语句不会出现在脚本中 .

有任何处理这些问题的想法吗?

我的步骤:1 . 我创建了MV和主键

CREATE MATERIALIZED VIEW MV_TEST ( TEST_ID , NAME , DESCRIPTION , COUNTRY_ID , COUNTRY_NAME  ) 
NEVER REFRESH 
AS SELECT
    B.TEST_ID,
    B.NAME,
    B.DESCRIPTION,
    C.COUNTRY_ID,
    C.COUNTRY_NAME
FROM
    TEST@TESTDB B,
    COUNTRY@TESTDB C
WHERE B.COUNTRY_ID = C.COUNTRY_ID;


ALTER TABLE MV_TEST
ADD CONSTRAINT MV_TEST_PK PRIMARY KEY ( TEST_ID );
  • 我将db结构合并到我的数据模型(Oracle SQL Data Modeler)中,并查看了MV,主键和使用主键创建的唯一索引 .

  • 我删除MV或连接到没有这些mv的模式,并将我的comlete模型与db模式进行比较,只获得带有模具MV和死亡唯一索引的脚本

  • 试图将主键的sql放入"script end"或"after create"脚本属性,但它不会出现在我的合并脚本中 .