Modifier le propriétaire d'un schéma

ALTER SCHEMA %nom_schema OWNER TO %nouveau_producteur ;

ou

UPDATE z_asgard.gestion_schema_usr SET producteur = '%nouveau_producteur' WHERE nom_schema = '%nom_schema' ;

La modification du propriétaire du schéma par une commande ALTER SCHEMA … OWNER est prise en charge de la façon suivante :

L’utilisateur est informé de toutes ces actions par une série de notifications.

Lorsque la valeur du champ producteur est modifiée dans la vue utilisateur[3], le rôle désigné devient automatiquement propriétaire du schéma et de tous les objets qu’il contient.

Là encore, les deux méthodes mènent exactement au même résultat.

Remarque

Quel que soit la méthode utilisée, le rôle de l'utilisateur doit :

  • être membre de l'ancien rôle producteur[1] du schéma ;

  • être membre du nouveau rôle producteur du schéma ;

  • disposer du privilège CREATE sur la base.

Ces droits peuvent être acquis par héritage de rôles de groupe dont l'utilisateur est membre. g_admin[4] et les rôles super-utilisateurs remplissent nativement ces conditions. Pour les autres rôles, le privilège CREATE devra être conféré explicitement par l'administrateur, ainsi bien entendu que les permissions sur les rôles producteurs.

Exemple

Modification du propriétaire du schéma w_snow, qui contient pour seuls objets une table et la séquence utilisée par sa clé primaire.

Avec une commande classique :

1
2
ALTER SCHEMA w_snow OWNER TO g_admin ;
1
2
NOTICE: attribution de la propriété des objets au rôle producteur du schéma w_snow :
3
NOTICE: > ALTER TABLE w_snow.journal_du_mur OWNER TO g_admin
4
NOTICE: > ALTER SEQUENCE w_snow.journal_du_mur_id_seq OWNER TO g_admin
5
NOTICE: ... Le propriétaire du schéma w_snow a été mis à jour dans la table de gestion.
6
ALTER SCHEMA

Par l’intermédiaire de la table de gestion :

1
2
UPDATE z_asgard.gestion_schema_usr
3
    SET producteur = 'g_admin'
4
    WHERE nom_schema = 'w_snow' ;
1
2
NOTICE: attribution de la propriété du schéma et des objets au rôle producteur du schéma w_snow :
3
NOTICE: > ALTER SCHEMA w_snow OWNER TO g_admin
4
NOTICE: > ALTER TABLE w_snow.journal_du_mur OWNER TO g_admin
5
NOTICE: > ALTER SEQUENCE w_snow.journal_du_mur_id_seq OWNER TO g_admin
6
UPDATE 1 

Si certains privilèges de l'ancien propriétaire avaient été révoqués, il en sera de même pour le nouveau. L'ancien propriétaire n'aura quoi qu'il arrive plus aucun droit direct sur le schéma.