version 11.3
GRANT [READ | READ_WRITE | ALL] ON nom_sql TO nom_sql
Description
La commande GRANT permet de définir les droits d'accès associés au schéma nom_sql. Ces droits seront attribués au groupe d'utilisateurs 4D désigné par le second paramètre nom_sql.
Les mots-clés READ, READ_WRITE et ALL permettent de définir les types d'accès autorisés pour la table :
READ instaure le mode d'accès Lecture seulement (données)
READ_WRITE instaure le mode d'accès Lecture/Ecriture (données)
ALL instaure le mode d'accès complet (données et structure).
Le contrôle des accès s'applique uniquement aux connexions depuis l'extérieur. Le code SQL exécuté à l'intérieur de 4D via les balises Debut SQL/Fin SQL ou les commandes telles que SQL EXECUTER bénéficie toujours d'un accès sans restriction.
Note de compatibilité : Lors de la conversion d'une ancienne base en version 11.3 ou suivante, les droits d'accès globaux (tels que définis dans la page SQL des Préférences de l'application) sont transférés au schéma par défaut.
Le premier paramètre nom_sql doit contenir le nom du groupe d'utilisateurs 4D auquel vous souhaitez affecter les droits d'accès au schéma. Ce groupe doit exister dans la base 4D.
Note : 4D permet de définir des noms de groupes comportant des espaces ou des caractères accentués, qui ne sont pas acceptés par le standard SQL. Dans ce cas, vous devez encadrer le nom avec les caractères [ et ]. Par exemple : GRANT READ ON [le schéma] TO [les admins!]
Seuls le Super_Utilisateur et l'Administrateur de la base peuvent modifier des schémas.
Note à propos de l'intégrité référentielle
4D assure le principe d'intégrité référentielle indépendamment des droits d'accès. Imaginons par exemple que vous disposiez de deux tables Table1 et Table2 reliées par un lien de type N vers 1 (Table2 -> Table1). Table1 appartient au schéma S1 et Table2 au schéma S2. Un utilisateur disposant des droits d'accès du schéma S1 mais pas de ceux du schéma S2 peut supprimer des enregistrements dans la Table1. Dans ce cas, afin de respecter les principes d'intégrité référentielle, tous les enregistrements de la Table2 liés aux enregistrements supprimés de la Table1 seront également supprimés.
Exemple
Vous souhaitez autoriser l'accès en lecture écriture des données du schéma MonSchema1 au groupe "Power_Users" :
GRANT READ_WRITE ON MonSchema1 TO POWER_USERS
Référence
ALTER SCHEMA, CREATE SCHEMA, REVOKE.