Je veux changer un objet de schéma

ProcédureMéthode « classique »

Attention

L'usage de cette méthode est vivement déconseillé pour les tables, vues, séquences et assimilés.

Elle est parfaitement acceptable pour les fonctions et les types, sauf à avoir modifié manuellement les droits des rôles éditeur[1] et/ou lecteur[2] sur l'objet en question (ce qui n'est généralement pas le cas).

Elle ne pose aucun problème pour les autres types d'objets, pour lesquels il s'agit d'ailleurs de la seule option possible.

Prérequis

Je dois être membre du rôle producteur[3] du schéma de départ et du schéma d’arrivée.

  1. J’utilise ma méthode habituelle.

    Commande SQL ALTER TABLE/ALTER VIEW/etc., fonctionnalité de pgAdmin, fonctionnalité du plugin DBManager de QGIS…

    1. Le producteur du nouveau schéma devient automatiquement propriétaire de l’objet que je viens de déplacer. Pour le reste, les droits sont conservés à l’identique (aucun droit n'est attribué aux rôles éditeur[1] et lecteur[2] du nouveau schéma, les éditeur et lecteur de l'ancien schéma gardent leurs privilèges...) – ce qui est rarement le comportement souhaité pour une table ou une vue.

ProcédureSi je veux transférer les droits :

Prérequis

Je dois être membre du rôle producteur[3] du schéma de départ et du schéma d’arrivée.

  1. J’utilise la fonction z_asgard.asgard_deplace_objet, avec la variante n°1.

    1
    2
    SELECT z_asgard.asgard_deplace_obj('%schema_de_depart', '%nom_de_l_objet', '%type_d_objet', '%schema_d_arrivee', 1) ;

    La variante est spécifiée par le dernier paramètre.

    Le type d’objet (troisième paramètre) est écrit en anglais et en minuscules :

    table

    partitioned table

    view

    materialized view

    foreign table

    sequence

    function

    aggregate

    procedure

    routine

    type

    domain

    1. Le producteur du nouveau schéma devient automatiquement propriétaire de l’objet que je viens de déplacer.

      Les droits des anciens éditeur[1] et lecteur[2] sont révoqués.

      Les rôles éditeur et lecteur du schéma d'arrivée reçoivent à l'identique les droits qu'avaient les rôles éditeur et lecteur du schéma de départ. Les éventuelles modifications manuelles sont préservées. S'il n'y avait pas de lecteur/éditeur pour l'ancien schéma, le lecteur/éditeur du nouveau schéma (s'il existe) reçoit les droits par défaut prévus par ASGARD.

      Le cas échéant, les privilèges accordés à d'autres rôles sur l'objet sont conservés.

ProcédureSi je veux réinitialiser les droits :

Prérequis

Je dois être membre du rôle producteur[3] du schéma de départ et du schéma d’arrivée.

  1. J’utilise la fonction z_asgard.asgard_deplace_objet, avec la variante n°2.

    1
    2
    SELECT z_asgard.asgard_deplace_obj('%schema_de_depart', '%nom_de_l_objet', '%type_d_objet', '%schema_d_arrivee', 2) ;

    La variante est spécifiée par le dernier paramètre.

    Le type d’objet (troisième paramètre) est écrit en anglais et en minuscules :

    table

    partitioned table

    view

    materialized view

    foreign table

    sequence

    function

    aggregate

    procedure

    routine

    type

    domain

    1. Le producteur du nouveau schéma devient automatiquement propriétaire de l’objet que je viens de déplacer.

      S'ils sont définis, l'éditeur[1] et le lecteur[2] du nouveau schéma reçoivent sur l'objet les droits standards prévus pour la fonction.

      Les droits des anciens éditeur et lecteur sont révoqués, ainsi que ceux qui auraient été manuellement attribués à d'autres rôles.