Skapa SYNONYM

syfte

användCREATESYNONYM 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: SELECTINSERTUPDATEDELETEFLASHBACKTABLEEXPLAINPLAN och LOCKTABLE.

Du kan hänvisa till synonymer i följande DDL-uttalanden: AUDITNOAUDITGRANTREVOKEoch 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 haCREATESYNONYM systembehörighet.

för att skapa en privat synonym i en annan användares schema måste du haCREATEANYSYNONYM systembehörighet.

för att skapa ettPUBLIC synonym måste du haCREATEPUBLICSYNONYM systembehörighet.

Syntax

create_synonym::=

beskrivning av create_synonym.gif följer

beskrivning av illustrationen create_synonym.gif

semantik

eller ersätt

AngeORREPLACE 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 ORREPLACE-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 schemathrremote 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 shmå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;

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *