doel
Gebruik de instructie CREATE
SYNONYM
om een synoniem te maken, wat een alternatieve naam is voor een tabel, weergave, sequentie, procedure, opgeslagen functie, pakket, gematerialiseerde weergave, Java class schemaobject, door de gebruiker gedefinieerd objecttype of een ander synoniem.
Synoniemen bieden zowel gegevensonafhankelijkheid als locatietransparantie. Synoniemen staan applicaties toe om zonder wijziging te functioneren, ongeacht welke gebruiker eigenaar is van de tabel of weergave en ongeacht welke database de tabel of weergave bevat. Synoniemen zijn echter geen vervanging voor privileges op databaseobjecten. De juiste rechten moeten worden verleend aan een gebruiker voordat de gebruiker het synoniem kan gebruiken.
U kunt verwijzen naar synoniemen in het volgende DML-instructies: SELECT
INSERT
UPDATE
DELETE
FLASHBACK
TABLE
EXPLAIN
PLAN
, en LOCK
TABLE
.
u kunt naar Synoniemen verwijzen in de volgende DDL-statements: AUDIT
NOAUDIT
GRANT
REVOKE
, en COMMENT
.
zie ook:
Oracle Database Concepts voor algemene informatie over Synoniemen
vereisten
om een privésynoniem in uw eigen schema aan te maken, moet u de CREATE
SYNONYM
systeemrechten hebben.
om een privésynoniem aan te maken in het schema van een andere gebruiker, moet u de CREATE
ANY
SYNONYM
systeemrechten hebben.
om een PUBLIC
synoniem aan te maken, moet u de CREATE
PUBLIC
SYNONYM
systeem privilege hebben.
syntaxis
create_synonym::=
beschrijving van de illustratie create_synonym.gif
semantiek
of vervang
Specificeer OR
REPLACE
om het synoniem opnieuw aan te maken als het al bestaat. Gebruik deze clausule om de definitie van een bestaand synoniem te wijzigen zonder deze eerst te laten vallen.
beperking bij het vervangen van een synoniem u kunt de OR
REPLACE
clausule niet gebruiken voor een typesynoniem dat afhankelijke tabellen of afhankelijke geldige door de gebruiker gedefinieerde objecttypen heeft.
PUBLIC
SpecificeerPUBLIC
om een publiek synoniem aan te maken. Openbare Synoniemen zijn toegankelijk voor alle gebruikers. Elke gebruiker moet echter de juiste rechten hebben op het onderliggende object om het synoniem te kunnen gebruiken.
bij het omzetten van verwijzingen naar een object gebruikt Oracle Database alleen een publiek synoniem als het object niet vooraf is voorzien van een schema en niet wordt gevolgd door een databasekoppeling.
Als u deze clausule weglaat, dan is het synoniem privé en is alleen toegankelijk binnen het schema. De naam van een privésynoniem moet uniek zijn in het schema.
opmerkingen over openbare Synoniemen de volgende opmerkingen zijn van toepassing op openbare Synoniemen:
-
Als u een openbaar synoniem maakt en het vervolgens afhankelijke tabellen of afhankelijke geldige door de gebruiker gedefinieerde objecttypen heeft, kunt u geen ander databaseobject met dezelfde naam als het synoniem maken in hetzelfde schema als de afhankelijke objecten.
-
zorg ervoor dat u geen openbaar synoniem maakt met dezelfde naam als een bestaand schema. Als je dat doet, dan worden alle PL/SQL eenheden die die naam gebruiken ongeldig gemaakt.
schema
specificeer het schema dat het synoniem bevat. Als u schema
weglaat, dan maakt Oracle Database het synoniem aan in uw eigen schema. U kunt geen schema voor het synoniem opgeven als u PUBLIC
hebt opgegeven.
synoniem
specificeer de naam van het aan te maken synoniem.
opmerking:
Synoniemen langer dan 30 bytes kunnen worden aangemaakt en verwijderd. Echter, tenzij ze een Java naam vertegenwoordigen zullen ze niet werken in een andere SQL commando. Namen langer dan 30 bytes worden omgezet in een obscure kortere string voor opslag in het data dictionary.
zie ook:
” synoniem maken: Voorbeelden ” en “Oracle Database Resolution of Synoniemen: Example”
voor Clausule
specificeer het object waarvoor het synoniem is gemaakt. Het schemaobject waarvoor u het synoniem maakt, kan van de volgende typen zijn:
-
Tabel of object tabel
-
Bekijken of object bekijken
-
Volgorde
-
Opgeslagen procedure, functie, of een pakket
-
Gematerialiseerd weergeven
-
Java-klasse schema object
-
door de Gebruiker gedefinieerd object type
-
Synoniem
Het schema object hoeft niet te bestaan en u hoeft geen rechten om toegang tot het object.
beperking op de For-Clausule het schema-object kan niet in een pakket worden opgenomen.
schema specificeer het schema waarin het object zich bevindt. Als u het object niet kwalificeert met schema
, dan neemt de database aan dat het schemaobject zich in uw eigen schema bevindt.
Als u een synoniem maakt voor een procedure of functie in een externe database, dan moet u schema
opgeven in dit CREATE
statement. U kunt ook een lokaal publiek synoniem maken in de database waar het object zich bevindt. Echter, de database link moet dan worden opgenomen in alle volgende oproepen naar de procedure of functie.
dblink u kunt een volledige of gedeeltelijke databaselink opgeven om een synoniem te maken voor een schema-object in een externe database waar het object zich bevindt. Als u dblink
opgeeft en schema
weglaat, dan verwijst het synoniem naar een object in het schema dat is opgegeven door de databaselink. Oracle raadt u aan het schema met het object in de externe database op te geven.
Als u dblink
weglaat, dan neemt Oracle Database aan dat het object zich in de lokale database bevindt.
beperking op Databaselinks u kunt dblink
niet opgeven voor een Java-klasse synoniem.
zie ook:
-
“Referring to Objects in Remote Databases” voor meer informatie over referring to database links
-
maak DATABASE LINK voor meer informatie over het creëren van database links
voorbeelden
maak synoniem: voorbeelden om het synoniem offices
voor de tabel locations
in het schema hr
geeft u de volgende verklaring af:
CREATE SYNONYM offices FOR hr.locations;
om een PUBLIC
synoniem voor de employees
tabel in het schema hr
op de remote
database, kunt u de volgende verklaring:
CREATE PUBLIC SYNONYM emp_table FOR [email protected];
een synoniem kan dezelfde naam hebben als het onderliggende object, mits het onderliggende object in een ander schema is opgenomen.
Oracle-Database-resolutie van synoniemen: 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;
als de gebruiker sh
geeft dan de volgende statement, dan de database retourneert het aantal rijen van sh.customers
:
SELECT COUNT(*) FROM customers;
om het aantal rijen van oe.customers
, de gebruiker sh
moet voorwoord customers
met de schemanaam. (De gebruiker sh
moet ook select permission hebben op 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;