Scopo
Utilizzare l’istruzioneCREATE
SYNONYM
per creare un sinonimo, che è un nome alternativo per una tabella, vista, sequenza, procedura, funzione memorizzata, pacchetto, vista materializzata, oggetto schema classe Java, tipo di oggetto definito dall’utente o un altro sinonimo.
I sinonimi forniscono sia l’indipendenza dei dati che la trasparenza della posizione. I sinonimi consentono alle applicazioni di funzionare senza modifiche indipendentemente dall’utente che possiede la tabella o la vista e indipendentemente dal database che contiene la tabella o la vista. Tuttavia, i sinonimi non sostituiscono i privilegi sugli oggetti del database. I privilegi appropriati devono essere concessi a un utente prima che l’utente possa utilizzare il sinonimo.
È possibile consultare sinonimi nei seguenti istruzioni DML: SELECT
INSERT
UPDATE
DELETE
FLASHBACK
TABLE
EXPLAIN
PLAN
e LOCK
TABLE
.
È possibile fare riferimento ai sinonimi nelle seguenti dichiarazioni DDL: AUDIT
NOAUDIT
GRANT
REVOKE
e COMMENT
.
Vedi anche:
Oracle Database Concepts per informazioni generali sui sinonimi
Prerequisiti
Per creare un sinonimo privato nel proprio schema, è necessario disporre del privilegio di sistema CREATE
SYNONYM
.
Per creare un sinonimo privato nello schema di un altro utente, è necessario disporre del privilegio di sistema CREATE
ANY
SYNONYM
.
Per creare un PUBLIC
sinonimo, è necessario disporre del CREATE
PUBLIC
SYNONYM
privilegio di sistema.
Sintassi
create_synonym::=
Descrizione dell’illustrazione create_synonym.gif
Semantica
O SOSTITUIRE
Specificare OR
REPLACE
per ricreare il sinonimo se già esiste. Utilizzare questa clausola per modificare la definizione di un sinonimo esistente senza prima rilasciarlo.
Restrizione sulla sostituzione di un sinonimo Non è possibile utilizzare la clausolaOR
REPLACE
per un sinonimo di tipo che ha tabelle dipendenti o tipi di oggetto definiti dall’utente validi.
PUBLIC
SpecificarePUBLIC
per creare un sinonimo pubblico. I sinonimi pubblici sono accessibili a tutti gli utenti. Tuttavia, ogni utente deve disporre di privilegi appropriati sull’oggetto sottostante per utilizzare il sinonimo.
Quando si risolvono i riferimenti a un oggetto, Oracle Database utilizza un sinonimo pubblico solo se l’oggetto non è preceduto da uno schema e non è seguito da un collegamento al database.
Se si omette questa clausola, il sinonimo è privato ed è accessibile solo all’interno del suo schema. Un nome sinonimo privato deve essere univoco nel suo schema.
Note sui sinonimi pubblici Le seguenti note si applicano ai sinonimi pubblici:
-
Se si crea un sinonimo pubblico e successivamente ha tabelle dipendenti o tipi di oggetto definiti dall’utente validi dipendenti, non è possibile creare un altro oggetto di database con lo stesso nome del sinonimo nello stesso schema degli oggetti dipendenti.
-
Fare attenzione a non creare un sinonimo pubblico con lo stesso nome di uno schema esistente. In tal caso, tutte le unità PL/SQL che utilizzano quel nome verranno invalidate.
schema
Specificare lo schema per contenere il sinonimo. Se si omette schema
, Oracle Database crea il sinonimo nel proprio schema. Non è possibile specificare uno schema per il sinonimo se è stato specificato PUBLIC
.
sinonimo
Specificare il nome del sinonimo da creare.
Nota:
è possibile creare e rilasciare sinonimi più lunghi di 30 byte. Tuttavia, a meno che non rappresentino un nome Java, non funzioneranno in nessun altro comando SQL. I nomi più lunghi di 30 byte vengono trasformati in una stringa più breve oscura per l’archiviazione nel dizionario dei dati.
Vedi anche:
“CREA SINONIMO: Esempi ” e ” Oracle Database Resolution of Synonyms: Example “
FOR Clause
Specificare l’oggetto per il quale viene creato il sinonimo. L’oggetto schema per il quale si sta creando il sinonimo può essere dei seguenti tipi:
-
Tabella o tabella oggetto
-
Vista o di un oggetto di visualizzazione
-
Sequenza
-
Stored procedure, function, o pacchetto
-
vista Materializzata
-
Java oggetto dello schema di classe
-
definito dall’Utente tipo di oggetto
-
Sinonimo
L’oggetto dello schema di bisogno, attualmente, non esiste e non è necessario avere i privilegi per l’accesso all’oggetto.
Restrizione sulla clausola FOR L’oggetto schema non può essere contenuto in un pacchetto.
schema Specificare lo schema in cui risiede l’oggetto. Se non si qualifica l’oggetto con schema
, il database presuppone che l’oggetto schema sia nel proprio schema.
Se si sta creando un sinonimo per una procedura o una funzione su un database remoto, è necessario specificare schema
in questa istruzione CREATE
. In alternativa, è possibile creare un sinonimo pubblico locale nel database in cui risiede l’oggetto. Tuttavia, il collegamento al database deve essere incluso in tutte le chiamate successive alla procedura o alla funzione.
dblink È possibile specificare un collegamento al database completo o parziale per creare un sinonimo per un oggetto schema in un database remoto in cui si trova l’oggetto. Se si specifica dblink
e si omette schema
, il sinonimo si riferisce a un oggetto nello schema specificato dal collegamento al database. Oracle consiglia di specificare lo schema contenente l’oggetto nel database remoto.
Se si omette dblink
, Oracle Database presuppone che l’oggetto si trovi nel database locale.
Restrizione sui collegamenti di database Non è possibile specificaredblink
per un sinonimo di classe Java.
leggi Anche:
-
“, Riferendosi agli Oggetti in un Database Remoto” per ulteriori informazioni su di riferimento per i collegamenti ai database
-
CREATE DATABASE LINK per ulteriori informazioni sulla creazione di collegamenti a database
Esempi
CREARE SINONIMO di: Esempi Per definire il sinonimo offices
per la tabella locations
nello schema hr
, eseguire l’istruzione seguente:
CREATE SYNONYM offices FOR hr.locations;
creare un PUBLIC
sinonimo di employees
tabella nello schema hr
su remote
database, è possibile eseguire l’istruzione seguente:
CREATE PUBLIC SYNONYM emp_table FOR [email protected];
Un sinonimo possono avere lo stesso nome dell’oggetto sottostante, a condizione che il sottostante oggetto è contenuto in un altro schema.
Oracle Database Risoluzione dei sinonimi: Example Oracle Database attempts to resolve references to objects at the schema level before resolving them at the PUBLIC
synonym level. For example, the schemas oe
and sh
both contain tables named customers
. In the next example, user SYSTEM
creates a PUBLIC
synonym named customers
for oe.customers
:
CREATE PUBLIC SYNONYM customers FOR oe.customers;
Se l’utente sh
poi rilascia la seguente dichiarazione, quindi il database restituisce il numero di righe da sh.customers
:
SELECT COUNT(*) FROM customers;
Per recuperare il numero di righe da oe.customers
utente sh
deve prefazione customers
con il nome dello schema. (Anche l’utente sh
deve avere l’autorizzazione select su oe.customers
.)
SELECT COUNT(*) FROM oe.customers;
If the user hr
‘s schema does not contain an object named customers
, and if hr
has select permission on oe.customers
, then hr
can access the customers
table in oe
‘s schema by using the public synonym customers
:
SELECT COUNT(*) FROM customers;