2010-01-13 2 views
0

J'ai une vue qui est construite sur plusieurs tables à partir du schéma de différents utilisateurs. En vertu de l'utilisateur actuellement connecté, il est capable de voir la table de schéma différent. Lorsque la vue est créée, le nom de la table devient ambigu lorsque l'utilisateur a accès aux mêmes tables à partir du schéma différent. Est-il possible de spécifier l'utilisation de la table à partir du schéma utilisateur actuel lors de la création de la vue? Pouvons-nous le faire pour l'une des tables de la définition de vue alors que d'autres tables peuvent être sélectionnées à partir de n'importe quel schéma?afficher avec les tables de plusieurs schéma utilisateur

Répondre

1

Vous devriez pouvoir accéder au schéma (avec les permissions correctes) en préfixant le nom du schéma.

schemaname.tablename 

Espérons avoir bien compris votre question.

2

« Lorsque la vue est créé la table nom devient ambigu que l'utilisateur ont accès aux mêmes tables de les différents schémas »

Il est pas ambigu à Oracle.

La vue existe dans un schéma, SCHEMA_1. Si cette vue fait référence à un objet TABLE_A, Oracle recherchera d'abord un objet TABLE_A dans SCHEMA_1. S'il trouve une table, il l'utilisera. S'il trouve un SYNONYM, il utilisera tout ce que le synonyme indique. S'il n'y a rien dans SCHEMA_1, il recherchera un SYNONYME PUBLIC pour TABLE_A et utilisera tout ce qui pointe vers. SYNONYMS peut pointer vers d'autres synonymes, vues ou tableaux.

Vous pouvez interroger USER_DEPENDENCIES pour voir sur quels objets la vue est basée.

Vous ne pouvez pas avoir une vue dans SCHEMA_1 qui utilise TABLE_A dans SCHEMA_2 si elle est interrogée à partir de SCHEMA_2 mais utilise une TABLE_A différente dans SCHEMA_3 si elle est interrogée à partir de SCHEMA_3.

Questions connexes