syfte
användCREATE
SYNONYM
för att skapa en synonym, som är ett alternativt namn för en tabell, vy, sekvens, procedur, lagrad funktion, paket, materialiserad vy, Java-klassschemaobjekt, användardefinierad objekttyp eller en annan synonym.
synonymer ger både dataoberoende och platstransparens. Synonymer tillåter applikationer att fungera utan modifiering oavsett vilken användare som äger tabellen eller vyn och oavsett vilken databas som innehåller tabellen eller vyn. Synonymer är dock inte ett substitut för privilegier på databasobjekt. Lämpliga privilegier måste beviljas en användare innan användaren kan använda synonym.
Du kan hänvisa till synonymer i följande DML-uttalanden: SELECT
INSERT
UPDATE
DELETE
FLASHBACK
TABLE
EXPLAIN
PLAN
och LOCK
TABLE
.
Du kan hänvisa till synonymer i följande DDL-uttalanden: AUDIT
NOAUDIT
GRANT
REVOKE
och COMMENT
.
Se även:
Oracle Database Concepts för allmän information om synonymer
förutsättningar
för att skapa en privat synonym i ditt eget schema måste du haCREATE
SYNONYM
systembehörighet.
för att skapa en privat synonym i en annan användares schema måste du haCREATE
ANY
SYNONYM
systembehörighet.
för att skapa ettPUBLIC
synonym måste du haCREATE
PUBLIC
SYNONYM
systembehörighet.
Syntax
create_synonym::=
beskrivning av illustrationen create_synonym.gif
semantik
eller ersätt
AngeOR
REPLACE
för att återskapa synonymen om den redan finns. Använd denna klausul för att ändra definitionen av en befintlig synonym utan att först släppa den.
begränsning för att ersätta en Synonym du kan inte använda OR
REPLACE
-klausulen för en typsynonym som har några beroende tabeller eller beroende giltiga användardefinierade objekttyper.
PUBLIC
AngePUBLIC
för att skapa en offentlig synonym. Offentliga synonymer är tillgängliga för alla användare. Men varje användare måste ha lämpliga privilegier på det underliggande objektet för att kunna använda synonym.
När du löser referenser till ett objekt använder Oracle Database endast en offentlig synonym om objektet inte föregås av ett schema och inte följs av en databaslänk.
om du utelämnar denna klausul är synonymen privat och är endast tillgänglig inom dess schema. Ett privat synonymnamn måste vara unikt i sitt schema.
anteckningar om offentliga Synonymer följande anteckningar gäller för offentliga synonymer:
-
Om du skapar en offentlig synonym och den senare har beroende tabeller eller beroende giltiga användardefinierade objekttyper, kan du inte skapa ett annat databasobjekt med samma namn som synonym i samma schema som de beroende objekten.
-
se till att inte skapa en offentlig synonym med samma namn som ett befintligt schema. Om du gör det kommer alla PL / SQL-enheter som använder det namnet att ogiltigförklaras.
schema
ange schemat som ska innehålla synonym. Om du utelämnar schema
, sedan Oracle Database skapar synonym i ditt eget schema. Du kan inte ange ett schema för synonym om du har angett PUBLIC
.
synonym
Ange namnet på den synonym som ska skapas.
Obs:
synonymer längre än 30 byte kan skapas och tappas. Men om de inte representerar ett Java-namn fungerar de inte i något annat SQL-kommando. Namn som är längre än 30 byte omvandlas till en obskyr kortare sträng för lagring i dataordlistan.
Se även:
” skapa SYNONYM: Exempel” och ”Oracle Databasupplösning av synonymer: exempel”
För Klausul
ange objektet för vilket synonymen skapas. Schemaobjektet som du skapar synonymen för kan vara av följande typer:
-
tabell eller objekttabell
-
visa eller objektvy
-
sekvens
-
lagrad procedur, funktion eller paket
-
materialiserad vy
-
Java klass schema objekt
-
användardefinierad objekttyp
-
synonym
schemaobjektet behöver för närvarande inte existera och du behöver inte ha behörighet att komma åt objektet.
begränsning av For-klausulen schemaobjektet kan inte finnas i ett paket.
schema ange schemat där objektet finns. Om du inte kvalificerar objekt med schema
, antar databasen att schemaobjektet finns i ditt eget schema.
Om du skapar en synonym för en procedur eller funktion i en fjärrdatabas måste du ange schema
I detta CREATE
uttalande. Alternativt kan du skapa en lokal offentlig synonym i databasen där objektet finns. Databaslänken måste dock inkluderas i alla efterföljande samtal till proceduren eller funktionen.
dblink du kan ange en fullständig eller partiell databaslänk för att skapa en synonym för ett schemaobjekt i en fjärrdatabas där objektet finns. Om du anger dblink
och utelämna schema
, hänvisar synonymen till ett objekt i schemat som anges av databaslänken. Oracle rekommenderar att du anger schemat som innehåller objektet i fjärrdatabasen.
Om du utelämnar dblink
, antar Oracle Database att objektet finns i den lokala databasen.
begränsning av Databaslänkar du kan inte ange dblink
för en Java-klasssynonym.
Se även:
-
”hänvisar till objekt i fjärrdatabaser” för mer information om att hänvisa till databaslänkar
-
skapa DATABASLÄNK för mer information om att skapa databaslänkar
exempel
skapa SYNONYM: exempel för att definiera synonymoffices
för tabellenlocations
I schemathr
, utfärda följande uttalande:
CREATE SYNONYM offices FOR hr.locations;
för att skapa ettPUBLIC
synonym föremployees
tabell i schemathr
påremote
databas kan du utfärda följande uttalande:
CREATE PUBLIC SYNONYM emp_table FOR [email protected];
en synonym kan ha samma namn som det underliggande objektet, förutsatt att det underliggande objektet finns i ett annat schema.
Oracle databas upplösning av synonymer: 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;
om användaren sh
sedan utfärdar följande uttalande, returnerar databasen antalet rader från sh.customers
:
SELECT COUNT(*) FROM customers;
för att hämta räkningen av rader från oe.customers
måste användaren sh
förorda customers
med schemanamnet. (Användaren sh
måste ha välj behörighet på oe.customers
också.)
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;