sql >> データベース >  >> RDS >> Oracle

テーブルのマテリアライズド・ビュー・ログのフィルター列は使用できません

    ドキュメントには、「アグリゲートを使用したマテリアライズドビューの高速更新の制限」

    MVで使用されているすべての列をログに含める必要があります(例:

    )。
    CREATE MATERIALIZED VIEW LOG ON MV_LLATTRDATA_PARTITIONED_TEST
    WITH ROWID, SEQUENCE(ID, DEFID, ATTRID, VERNUM, DEFVERN) INCLUDING NEW VALUES;
    
    CREATE MATERIALIZED VIEW LOG ON DTREECORE
    WITH ROWID, SEQUENCE(DATAID) INCLUDING NEW VALUES;
    

    次に、MVを作成できます:

    CREATE MATERIALIZED VIEW MV_LLATTRDATA_MAX_VERSIONS
        NOLOGGING
        BUILD IMMEDIATE 
        REFRESH FAST ON COMMIT
        ENABLE QUERY REWRITE
        AS 
            SELECT AD.DEFID, AD.ATTRID, MAX(AD.VERNUM) AS MAX_VERNUM, MIN(AD.DEFVERN) AS MAX_DEFVERN
            FROM   MV_LLATTRDATA_PARTITIONED_TEST AD, DTREECORE DT
            WHERE AD.ID = DT.DATAID
            GROUP BY AD.DEFID, AD.ATTRID;
    
    Materialized view MV_LLATTRDATA_MAX_VERSIONS created.
    

    最も役立つエラーメッセージではありません...




    1. 3つのIDで検出されたすべての一意の組み合わせを継続的に挿入します

    2. SQLでデータディクショナリをクエリするための最良の方法

    3. ユーザーpostgresを作成できません:ロールpostgresが存在しません

    4. MySQLデータベースから300,000行を選択中に504ゲートウェイタイムアウトエラーが発生しました