Formål
BrukCREATE
SYNONYM
setningen for å lage et synonym, som er et alternativt navn for en tabell, visning, sekvens, prosedyre, lagret funksjon, pakke, materialisert visning, Java-klasseskjemaobjekt, brukerdefinert objekttype eller et annet synonym.
Synonymer gir både data uavhengighet og plassering åpenhet. Synonymer tillater søknader å fungere uten endring uavhengig av hvilken bruker som eier tabellen eller visningen, og uavhengig av hvilken database som inneholder tabellen eller visningen. Synonymer er imidlertid ikke en erstatning for rettigheter på databaseobjekter. Passende privilegier må gis til en bruker før brukeren kan bruke synonymet.
du kan referere til synonymer i FØLGENDE dml-setninger: SELECT
INSERT
UPDATE
DELETE
FLASHBACK
TABLE
EXPLAIN
PLAN
og LOCK
TABLE
.
du kan referere til synonymer i FØLGENDE DDL-setninger: AUDIT
NOAUDIT
GRANT
REVOKE
ogCOMMENT
.
Oracle Database Concepts for generell informasjon om synonymer
Forutsetninger
for å opprette et privat synonym i ditt eget skjema, må du ha CREATE
SYNONYM
systemprivilegium.
for å opprette et privat synonym i en annen brukers skjema, må du haCREATE
ANY
SYNONYM
systemrettigheter.
for å opprette en PUBLIC
synonym, må du ha CREATE
PUBLIC
SYNONYM
systemprivilegium.
Syntaks
create_synonym::=
Beskrivelse av illustrasjonen create_synonym.gif
Semantikk
ELLER ERSTATT
Spesifiser OR
REPLACE
for å gjenskape synonymet hvis det allerede finnes. Bruk denne klausulen til å endre definisjonen av et eksisterende synonym uten først å slippe det.
Begrensning På Å Erstatte Et Synonym Du kan ikke brukeOR
REPLACE
-setningsdelen for en type synonym som har noen avhengige tabeller eller avhengige gyldige brukerdefinerte objekttyper.
OFFENTLIG
Spesifiser PUBLIC
for å opprette et offentlig synonym. Offentlige synonymer er tilgjengelige for alle brukere. Men hver bruker må ha riktige rettigheter på det underliggende objektet for å kunne bruke synonymet.
Når du løser referanser til et objekt, Bruker Oracle Database et felles synonym bare hvis objektet ikke er prefaced av et skjema og ikke etterfølges av en databasekobling.
hvis du utelater denne klausulen, er synonymet privat og er bare tilgjengelig i skjemaet. Et privat synonym navn må være unikt i skjemaet.
Merknader Om Offentlige Synonymer følgende merknader gjelder for offentlige synonymer:
-
hvis du oppretter et felles synonym og det deretter har avhengige tabeller eller avhengige gyldige brukerdefinerte objekttyper, kan du ikke opprette et annet databaseobjekt med samme navn som synonymet i samme skjema som de avhengige objektene.
-
Pass på å ikke opprette et offentlig synonym med samme navn som et eksisterende skjema. Hvis du gjør det, vil alle PL/SQL-enheter som bruker det navnet, bli ugyldiggjort.
skjema
Angi at skjemaet skal inneholde synonymet. Hvis du utelater schema
, oppretter Oracle Database synonymet i ditt eget skjema. Du kan ikke angi et skjema for synonymet hvis du har angitt PUBLIC
.
synonym
Angi navnet på synonymet som skal opprettes.
Merk:
Synonymer lengre enn 30 byte kan opprettes og droppet. Men med mindre De representerer Et Java-navn, vil de ikke fungere i noen ANNEN SQL-kommando. Navn lengre enn 30 byte er forvandlet til en obskur kortere streng for lagring i dataordlisten.
Se Også:
» OPPRETT SYNONYM: Eksempler » Og » Oracle Database Oppløsning Av Synonymer: Eksempel «
For Klausul
Angi objektet som synonymet er opprettet for. Skjemaobjektet du oppretter synonymet for, kan være av følgende typer:
Sekvens
Lagret prosedyre, funksjon eller pakke
Materialisert visning
Java-klasseskjemaobjekt
brukerdefinert objekttype
synonym
skjemaobjektet trenger ikke eksisterer for øyeblikket, og du trenger ikke å ha privilegier for å få tilgang til objektet.
Begrensning PÅ For-Setningsdelen skjemaobjektet kan ikke finnes i en pakke.
skjema Angi skjemaet der objektet befinner seg. Hvis du ikke kvalifiserer objekt med schema
, antar databasen at skjemaobjektet er i ditt eget skjema.
hvis du oppretter et synonym for en prosedyre eller funksjon på en ekstern database, må du angi schema
i denneCREATE
– setningen. Alternativt kan du opprette et lokalt felles synonym på databasen der objektet ligger. Databasekoblingen må imidlertid inkluderes i alle påfølgende anrop til prosedyren eller funksjonen.
dblink du kan angi en fullstendig eller delvis databasekobling for å opprette et synonym for et skjemaobjekt på en ekstern database der objektet er plassert. Hvis du angir dblink
og utelater schema
, refererer synonymet til et objekt i skjemaet som er angitt av databaselenken. Oracle anbefaler at du angir skjemaet som inneholder objektet i den eksterne databasen.
hvis du utelater dblink
, antar Oracle Database at objektet er plassert på den lokale databasen.
Begrensning På Databaselenker Du kan ikke angi dblink
For Et Java-klassesynonym.
Se Også:
-
«Henviser Til Objekter I Eksterne Databaser» for mer informasjon om å henvise til databaselenker
Eksempler
OPPRETT SYNONYM: Eksempler for å definere synonymet offices
for tabellenlocations
i Skjemaethr
, utsted FØLGENDE SETNING:
CREATE SYNONYM offices FOR hr.locations;
for å opprette enPUBLIC
synonym foremployees
tabell i skjemaethr
påremote
database, kan du utstede følgende setning:
CREATE PUBLIC SYNONYM emp_table FOR [email protected];
et synonym kan ha samme navn som det underliggende objektet, forutsatt at det underliggende objektet finnes i et annet skjema.
Oracle Database Opplø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;
hvis brukerensh
deretter utsteder følgende setning, returnerer databasen antall rader frash.customers
:
SELECT COUNT(*) FROM customers;
for å hente tellingen av rader fraoe.customers
Må Brukerensh
forordcustomers
med skjemanavnet. (Brukeren sh
må ha select-tillatelse på oe.customers
også.)
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;