formål
brugCREATE
SYNONYM
til at oprette et synonym, som er et alternativt navn til en tabel, visning, sekvens, procedure, gemt funktion, pakke, materialiseret visning, Java-klasseskemaobjekt, brugerdefineret objekttype eller et andet synonym.
synonymer giver både datauafhængighed og placeringsgennemsigtighed. Synonymer tillader applikationer at fungere uden ændringer, uanset hvilken bruger der ejer tabellen eller visningen, og uanset hvilken database der indeholder tabellen eller visningen. Synonymer er dog ikke en erstatning for privilegier på databaseobjekter. Passende privilegier skal gives til en bruger, før brugeren kan bruge synonymet.
Du kan henvise til synonymer i følgende DML-udsagn: SELECT
INSERT
UPDATE
DELETE
FLASHBACK
TABLE
EXPLAIN
PLAN
, og LOCK
TABLE
.
Du kan henvise til synonymer i følgende DDL-udsagn: AUDIT
NOAUDIT
GRANT
REVOKE
og COMMENT
.
Se også:
Oracle Database Concepts for generel information om synonymer
forudsætninger
for at oprette et privat synonym i dit eget skema skal du haveCREATE
SYNONYM
system privilegium.
for at oprette et privat synonym i en anden brugers skema skal du have CREATE
ANY
SYNONYM
system privilegium.
for at oprette et PUBLIC
synonym, skal du have CREATE
PUBLIC
SYNONYM
system privilegium.
syntaks
create_synonym::=
beskrivelse af illustrationen create_synonym.gif
semantik
eller erstat
AngivOR
REPLACE
for at genskabe synonymet, hvis det allerede findes. Brug denne klausul til at ændre definitionen af et eksisterende synonym uden først at droppe det.
begrænsning ved udskiftning af et Synonym du kan ikke bruge OR
REPLACE
klausul for et typesynonym, der har afhængige tabeller eller afhængige gyldige brugerdefinerede objekttyper.
offentlig
AngivPUBLIC
for at oprette et offentligt synonym. Offentlige synonymer er tilgængelige for alle brugere. Hver bruger skal dog have passende privilegier på det underliggende objekt for at kunne bruge synonymet.
Når du løser henvisninger til et objekt, bruger Oracle Database kun et offentligt synonym, hvis objektet ikke er forud for et skema og ikke efterfølges af et databaselink.
Hvis du udelader denne klausul, er synonymet privat og er kun tilgængeligt inden for dets skema. Et privat synonym navn skal være unikt i sit skema.
noter om offentlige Synonymer følgende noter gælder for offentlige synonymer:
-
Hvis du opretter et offentligt synonym, og det efterfølgende har afhængige tabeller eller afhængige gyldige brugerdefinerede objekttyper, kan du ikke oprette et andet databaseobjekt med samme navn som synonymet i det samme skema som de afhængige objekter.
-
pas på ikke at oprette et offentligt synonym med samme navn som et eksisterende skema. Hvis du gør det, vil alle enheder, der bruger dette navn, blive ugyldiggjort.
skema
Angiv skemaet, der skal indeholde synonymet. Hvis du udelader schema
, opretter Oracle Database synonymet i dit eget skema. Du kan ikke angive et skema for synonymet, hvis du har angivet PUBLIC
.
synonym
Angiv navnet på det synonym, der skal oprettes.
Bemærk:
Synonymer længere end 30 bytes kan oprettes og droppes. Men medmindre de repræsenterer et Java-navn, fungerer de ikke i nogen anden kommando. Navne længere end 30 byte omdannes til en uklar kortere streng til opbevaring i dataordbogen.
Se også:
“Opret SYNONYM: Eksempler “og” Oracle Database opløsning af synonymer: eksempel ”
for Klausul
angiv det objekt, som synonymet er oprettet for. Skemaobjektet, som du opretter synonymet til, kan være af følgende typer:
-
tabel eller objekttabel
-
Vis eller objektvisning
-
sekvens
-
gemt procedure, funktion eller pakke
-
materialiseret visning
-
Java class schema object
-
brugerdefineret objekt
skriv
-
synonym
skemaobjektet behøver ikke at eksistere i øjeblikket, og du behøver ikke have privilegier for at få adgang til objektet.
begrænsning af for-klausulen skemaobjektet kan ikke være indeholdt i en pakke.
skema angiv det skema, hvor objektet befinder sig. Hvis du ikke kvalificerer objekt med schema
, antager databasen, at skemaobjektet er i dit eget skema.
Hvis du opretter et synonym for en procedure eller funktion på en fjerndatabase, skal du angiveschema
i denneCREATE
erklæring. Alternativt kan du oprette et lokalt offentligt synonym i den database, hvor objektet er placeret. Databaselinket skal dog inkluderes i alle efterfølgende opkald til proceduren eller funktionen.
dblink du kan angive et komplet eller delvis databaselink for at oprette et synonym for et skemaobjekt i en fjerndatabase, hvor objektet er placeret. Hvis du angiver dblink
og udelader schema
, henviser synonymet til et objekt i skemaet angivet af databaselinket. Oracle anbefaler, at du angiver skemaet, der indeholder objektet i fjerndatabasen.
Hvis du udeladerdblink
, antager Oracle Database, at objektet er placeret i den lokale database.
begrænsning af Databaselinks du kan ikke angive dblink
for et Java-klassesynonym.
Se også:
-
“henvisning til objekter i eksterne databaser” for mere information om henvisning til databaselinks
-
Opret DATABASELINK for mere information om oprettelse af databaselinks
eksempler
Opret SYNONYM: eksempler til at definere synonymet offices
til tabellen locations
i skemaet hr
, udsted følgende erklæring:
CREATE SYNONYM offices FOR hr.locations;
for at oprette en PUBLIC
synonym for employees
tabel i skemaet hr
på remote
database, kan du udstede følgende sætning:
CREATE PUBLIC SYNONYM emp_table FOR [email protected];
et synonym kan have samme navn som det underliggende objekt, forudsat at det underliggende objekt er indeholdt i et andet skema.
Oracle Database opløsning af 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;
Hvis brugeren sh
udsender derefter følgende erklæring, returnerer databasen antallet af rækker fra sh.customers
:
SELECT COUNT(*) FROM customers;
for at hente tællingen af rækker fra af rækker fra oe.customers
, brugeren sh
skal forord customers
med skemanavnet. (Brugeren sh
skal have select permission på oe.customers
så godt.)
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;