asgard_admin_proprietaire
z_asgard.asgard_admin_proprietaire(n_schema text, n_owner text [, b_setschema boolean DEFAULT true ] )
La fonction asgard_admin_proprietaire
permet d’attribuer un schéma et tous les objets qu’il contient à un [nouveau] propriétaire.
Schéma⚓
z_asgard
Arguments⚓
n_schema
est une chaîne de caractères correspondant au nom du schéma à considérer ;n_owner
est une chaîne de caractères correspondant au nom du rôle qui sera rendu propriétaire des objets ;[optionnel]
b_setschema
est un paramètre booléen qui indique si la fonction doit changer le propriétaire du schéma et son contenu (True
) ou seulement des objets qu’il contient (False
).True
par défaut.
Résultat⚓
Lorsque l’exécution est terminée, la commande renvoie le nombre d’objets traités. Les commandes lancées sont notifiées au fur et à mesure et peuvent être consultées dans l’onglet Messages
de l’éditeur de requêtes de pgAdmin.
En elle-même, cette fonction n’agit que sur les propriétaires : elle liste l’ensemble des objets dont le propriétaire doit être réassigné et lance les commandes ALTER [OBJET] … OWNER TO
pour ce faire. Néanmoins, dans le contexte d’ASGARD, elle aura indirectement un effet supplémentaire : le producteur du schéma sera mis à jour dans la table de gestion.
Pour l’utilisateur, sauf à l’appliquer à un schéma qui ne serait pas référencé[1] par ASGARD, elle produit ainsi exactement le même résultat qu’une commande ALTER SCHEMA … OWNER TO
, ce qui présente peu d’intérêt. Elle est par contre essentielle pour ASGARD, car c’est par elle que passent toutes les opérations de réassignation de propriétaire lorsque le producteur d’un schéma est modifié. Ceci explique aussi pourquoi, dans l'exemple ci-après, les commandes ALTER OWNER TO
sur les objets sont exécutées deux fois : la commande ALTER SCHEMA OWNER TO
entraîne la mise à jour du producteur dans la table de gestion, ce qui relance automatiquement la fonction, afin qu’elle modifie les propriétaires des objets en conséquence. Ainsi les quatre premiers messages sont produits par les mécanismes d’ASGARD. Puis l’exécution initiale de la fonction se poursuit, avec une nouvelle exécution des commandes sur les objets…
Exemple :
SELECT z_asgard.asgard_admin_proprietaire('c_bibliotheque', 'g_snum') ;
NOTICE: attribution de la propriété des objets au rôle producteur du schéma c_bibliotheque :
NOTICE: > ALTER TABLE c_bibliotheque.journal_du_mur OWNER TO g_snum
NOTICE: > ALTER SEQUENCE c_bibliotheque.journal_du_mur_id_seq OWNER TO g_snum
NOTICE: ... Le propriétaire du schéma c_bibliotheque a été mis à jour dans la table de gestion.
NOTICE: > ALTER SCHEMA c_bibliotheque OWNER TO g_snum
NOTICE: > ALTER TABLE c_bibliotheque.journal_du_mur OWNER TO g_snum
NOTICE: > ALTER SEQUENCE c_bibliotheque.journal_du_mur_id_seq OWNER TO g_snum