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

  1. n_schema est une chaîne de caractères correspondant au nom du schéma à considérer ;

  2. n_owner est une chaîne de caractères correspondant au nom du rôle qui sera rendu propriétaire des objets ;

  3. [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

1
2
SELECT z_asgard.asgard_admin_proprietaire('c_bibliotheque', 'g_snum') ;
1
2
NOTICE:  attribution de la propriété des objets au rôle producteur du schéma c_bibliotheque :
3
NOTICE:  > ALTER TABLE c_bibliotheque.journal_du_mur OWNER TO g_snum
4
NOTICE:  > ALTER SEQUENCE c_bibliotheque.journal_du_mur_id_seq OWNER TO g_snum
5
NOTICE:  ... Le propriétaire du schéma c_bibliotheque a été mis à jour dans la table de gestion.
6
NOTICE:  > ALTER SCHEMA c_bibliotheque OWNER TO g_snum
7
NOTICE:  > ALTER TABLE c_bibliotheque.journal_du_mur OWNER TO g_snum
8
NOTICE:  > ALTER SEQUENCE c_bibliotheque.journal_du_mur_id_seq OWNER TO g_snum