Reprise des vues

Reprise des vues #

Les vues simples sont portées sans difficultés sur PostgreSQL.

PostgreSQL supporte également les vues que l’on peut mettre à jour (updatable views), y compris avec la clause WITH CHECK OPTION qui permet de s’assurer que des données insérées ou mises à jour dans la vue satisfont toujours les éventuelles conditions de sélection de cette vue.

Références :

Vues XML #

Certaines vues retournent le résultat au format XML. Le portage est assez rapide. Seule la fonction XMLELEMENT n’est pas compatible entre Oracle et PostgreSQL, il est nécessaire d’ajouter la directive name, qui devient le nom de l’élément XML pour PostgreSQL.

Ainsi, la définition de la vue suivante pour Oracle :

CREATE VIEW warehouse_view OF XMLTYPE
 XMLSCHEMA "http://www.oracle.com/xwarehouses.xsd" 
    ELEMENT "Warehouse"
    WITH OBJECT ID 
    (extract(OBJECT_VALUE, '/Warehouse/Area/text()').getnumberval())
 AS SELECT XMLELEMENT("Warehouse",
            XMLFOREST(WarehouseID AS "Building",
                      area AS "Area",
                      docks AS "Docks",
                      docktype AS "DockType",
                      wateraccess AS "WaterAccess",
                      railaccess AS "RailAccess",
                      parking AS "Parking",
                      VClearance AS "VClearance"))
  FROM warehouse_table;

sera transposée de cette façon pour PostgreSQL :

CREATE VIEW warehouse_view
SELECT XMLELEMENT(name "Warehouse",
            XMLFOREST(WarehouseID AS "Building",
                      area AS "Area",
                      docks AS "Docks",
                      docktype AS "DockType",
                      wateraccess AS "WaterAccess",
                      railaccess AS "RailAccess",
                      parking AS "Parking",
                      VClearance AS "VClearance"))
  FROM warehouse_table;

Références :

Vues matérialisées #

Les vues matérialisées existent dans PostgreSQL et se comportent globalement de la même manière qu’avec Oracle. Néanmoins le rafraîchissement des vues n’est possible qu’à la demande (sur commande REFRESH MATERIALZED VIEW) et reconstruit totalement la vue.

Ainsi, une vue créée vide par exemple avec :

CREATE MATERIALIZED VIEW emp_aggr_mv
  BUILD DEFERRED REFRESH FORCE
  ON DEMAND
AS
  SELECT deptno, SUM(sal) AS sal_by_dept
    FROM emp
   GROUP BY deptno;

sera traduite en :

CREATE MATERIALIZED VIEW emp_aggr_mv
AS
SELECT deptno, SUM(sal) AS sal_by_dept
  FROM emp
 GROUP BY deptno
WITH NO DATA;

Les journaux de vues matérialisées et autres comportements avancées comme le rafraîchissement ON COMMIT ne sont pas encore implémentés avec PostgreSQL. L’émulation du rafraîchissement nécessite d’opter pour l’usage de triggers ou d’outils externes comme l’extension pg_ivm.

Références :


Précédent
Reprise des tables
Suivant
Reprise des séquences