Exemple : Création d'une vue de base de données dans Informix à l'aide de la commande sdetable
Vous pouvez utiliser la commande sdetable pour créer une vue dans une géodatabase dans IBM Informix. La vue est alors automatiquement inscrite dans ArcSDE.
Cette rubrique contient un exemple d'utilisation d'une vue créée par sdetable pour limiter l'accès utilisateur à des données spécifiques. L'exemple est basé sur une table dont la définition est la suivante :
CREATE TABLE employees(emp_id integer not null, name varchar(32), department smallint not null, hire_date datetime not null);
A noter que la table contient une colonne de nombres entiers de valeur non nulle qui peut être utilisée comme identifiant de ligne ArcSDE.
Créer une vue à l'aide de la commande sdetable
Supposons que vous vouliez que le responsable du service 101 consulte toutes les colonnes de la table "employees", mais uniquement les lignes concernant les employés du service 101. Utilisez sdetable pour créer une vue avec toutes les lignes dans lesquelles le numéro de service est 101. L'option –w spécifie la clause WHERE de la requête stockée avec la définition de la vue.
sdetable -o create_view -T view_dept_101 -t employees -c 'emp_id,name,department,hire_date' -w "department = 101" -u gdb -p gdb.bdg -i sde:informix -s myidsserver -D testdb
Pour plus d'informations sur la commande sdetable, consultez le manuel Administration Command Reference.
La commande sdetable définit la vue dans la table de catalogue du système Informix sysviews, comme si vous aviez créé la vue à l'aide de SQL (Structured Query Language). Vous pouvez interroger la table système sysviews pour l'afficher.
Accorder des privilèges sur la vue
Le propriétaire de la vue peut accorder des privilèges sur la vue à des utilisateurs spécifiques sans toutefois leur permettre d'accéder à la table de base (employees). Dans cet exemple, des privilèges Select sont accordés sur la vue view_dept_101 à l'utilisateur mgr100 :
GRANT SELECT ON view_dept_101 TO mgr100;
Dans cet exemple, le propriétaire de la table et celui de la vue sont la même personne. S'ils étaient différents, le propriétaire de la table devrait accorder au propriétaire de la vue des privilèges de sélection dans la table, et lui permettre d'accorder des privilèges Select à d'autres utilisateurs. Si le privilège est accordé à l'aide de SQL, il convient d'inclure WITH GRANT OPTION dans l'instruction. Si le privilège est accordé à l'aide de la commande sdetable avec l'opération grant, l'option inherit (–I) doit être spécifiée.
Tester les privilèges
Connectez-vous en tant que mgr100 et sélectionnez des enregistrements dans view_dept_101.
SELECT * FROM gdb.view_dept_101; emp_id name dept hire_date 29 YAN WU 101 04/15/2002 67 LEE VAN 101 11/01/2004 78 SUE CHOO 101 05/31/2005 105 DAN HO 101 10/01/2006 111 ANN ANG 101 12/15/2006 135 BILL BO 101 10/15/2007
Comme prévu, tous les enregistrements de la table employees du service 101 sont renvoyés.
Les vues existent en tant qu'objets de la structure, indépendamment des tables qui les composent. Dans la requête suivante, l'utilisateur mgr100 n'a pas accès à la table employees. Pour mgr100, la table employees ne semble donc pas exister.
SELECT * FROM gdb.employees; Invalid object name 'gdb.employees'