Opret SYNONYM

formål

brugCREATESYNONYM 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: SELECTINSERTUPDATEDELETEFLASHBACKTABLEEXPLAINPLAN, og LOCKTABLE.

Du kan henvise til synonymer i følgende DDL-udsagn: AUDITNOAUDITGRANTREVOKE 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 haveCREATESYNONYM system privilegium.

for at oprette et privat synonym i en anden brugers skema skal du have CREATEANYSYNONYM system privilegium.

for at oprette et PUBLICsynonym, skal du have CREATEPUBLICSYNONYM system privilegium.

syntaks

create_synonym::=

beskrivelse af create_synonym.gif følger

beskrivelse af illustrationen create_synonym.gif

semantik

eller erstat

AngivORREPLACE 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 ORREPLACE 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 angiveschemai 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 hrremote 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;

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *