Je veux changer un objet de schéma
Procédure : Mé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.
Je dois être membre du rôle producteur[3] du schéma de départ et du schéma d’arrivée.
J’utilise ma méthode habituelle.
Commande SQL
ALTER TABLE
/ALTER VIEW
/etc., fonctionnalité de pgAdmin, fonctionnalité du plugin DBManager de QGIS…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édure : Si je veux transférer les droits :⚓
Je dois être membre du rôle producteur[3] du schéma de départ et du schéma d’arrivée.
J’utilise la fonction
, avec la variante n°1.z_asgard.asgard_deplace_objet
12SELECT 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
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édure : Si je veux réinitialiser les droits :⚓
Je dois être membre du rôle producteur[3] du schéma de départ et du schéma d’arrivée.
J’utilise la fonction
, avec la variante n°2.z_asgard.asgard_deplace_objet
12SELECT 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
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.