Creați sinonim

scop

utilizațiCREATESYNONYM pentru a crea un sinonim, care este un nume alternativ pentru un tabel, vizualizare, secvență, procedură, funcție stocată, pachet, vizualizare materializată, obiect de schemă de clasă Java, tip de obiect definit de utilizator sau alt sinonim.

sinonimele oferă atât independența datelor, cât și transparența locației. Sinonimele permit aplicațiilor să funcționeze fără modificări, indiferent de utilizatorul care deține tabelul sau vizualizarea și indiferent de baza de date care deține tabelul sau vizualizarea. Cu toate acestea, sinonimele nu înlocuiesc privilegiile asupra obiectelor bazei de date. Privilegiile corespunzătoare trebuie acordate unui utilizator înainte ca utilizatorul să poată utiliza sinonimul.

puteți face referire la sinonime în următoarele declarații DML: SELECTINSERTUPDATEDELETEFLASHBACKTABLEEXPLAINPLAN și LOCKTABLE.

puteți face referire la sinonime în următoarele declarații DDL: AUDITNOAUDITGRANTREVOKEși COMMENT.

Vezi și:

Oracle Database Concepts pentru informații generale despre sinonime

Cerințe preliminare

pentru a crea un sinonim privat în propria schemă, trebuie să aveți privilegiul de sistemCREATESYNONYM.

pentru a crea un sinonim privat în schema altui utilizator, trebuie să aveți privilegiul de sistem CREATEANYSYNONYM.

pentru a crea un PUBLIC sinonim, trebuie să aveți CREATEPUBLICSYNONYM privilegiul de sistem.

sintaxă

create_synonym::=

descrierea create_synonym.gif urmează

descrierea ilustrației create_synonym.gif

semantică

sau înlocuiți

specificațiORREPLACE pentru a re-crea sinonimul dacă acesta există deja. Utilizați această clauză pentru a schimba definiția unui sinonim existent fără a o renunța mai întâi.

restricție privind înlocuirea unui sinonim nu puteți utiliza clauzaORREPLACE pentru un sinonim de tip care are tabele dependente sau tipuri de obiecte definite de utilizator valide dependente.

PUBLIC

specificațiPUBLIC pentru a crea un sinonim public. Sinonimele publice sunt accesibile tuturor utilizatorilor. Cu toate acestea, fiecare utilizator trebuie să aibă privilegii corespunzătoare asupra obiectului de bază pentru a utiliza sinonimul.

la rezolvarea referințelor la un obiect, Oracle Database utilizează un sinonim public numai dacă obiectul nu este prefațat de o schemă și nu este urmat de o legătură de bază de date.

dacă omiteți această clauză, atunci sinonimul este privat și este accesibil numai în cadrul schemei sale. Un nume sinonim privat trebuie să fie unic în schema sa.

Note privind sinonimele publice următoarele note se aplică sinonimelor publice:

  • dacă creați un sinonim public și ulterior are tabele dependente sau tipuri de obiecte definite de utilizator valide dependente, atunci nu puteți crea un alt obiect de bază de date cu același nume ca sinonimul în aceeași schemă ca obiectele dependente.

  • aveți grijă să nu creați un sinonim public cu același nume ca o schemă existentă. Dacă faceți acest lucru, atunci toate unitățile PL/SQL care utilizează acest nume vor fi invalidate.

schema

specificați schema pentru a conține sinonimul. Dacă omiteți schema, atunci Oracle Database creează sinonimul în propria schemă. Nu puteți specifica o schemă pentru sinonim dacă ați specificat PUBLIC.

sinonim

specificați numele sinonimului care urmează să fie creat.

notă:

Sinonime mai mult de 30 de octeți pot fi create și a scăzut. Cu toate acestea, dacă nu reprezintă un nume Java, nu vor funcționa în nicio altă comandă SQL. Numele mai lungi de 30 de octeți sunt transformate într-un șir mai scurt obscur pentru stocare în dicționarul de date.

Vezi și:

„creează sinonim: Exemple ” și „Oracle Database Resolution of Synonyms: Example”

pentru Clauza

specificați obiectul pentru care este creat sinonimul. Obiectul schemei pentru care creați sinonimul poate fi de următoarele tipuri:

  • tabel sau tabel obiect

  • vizualizare sau vizualizare obiect

  • secvență

  • procedură, funcție sau pachet stocat

  • vizualizare materializată

  • Java class schema obiect

  • tip obiect definit de utilizator

  • sinonim

obiectul schemei nu trebuie să existe în prezent și nu trebuie să aveți privilegii pentru a accesa obiectul.

restricție privind clauza FOR obiectul schemei nu poate fi conținut într-un pachet.

schema specificați schema în care se află obiectul. Dacă nu se califică obiect cu schema, atunci baza de date presupune că obiectul schema este în propria schemă.

dacă creați un sinonim pentru o procedură sau o funcție într-o bază de date la distanță, atunci trebuie să specificațischema în această declarațieCREATE. Alternativ, puteți crea un sinonim public local în baza de date în care se află obiectul. Cu toate acestea, legătura bazei de date trebuie apoi inclusă în toate apelurile ulterioare la procedură sau funcție.

dblink puteți specifica o legătură de bază de date completă sau parțială pentru a crea un sinonim pentru un obiect schemă într-o bază de date la distanță în care se află obiectul. Dacă specificați dblink și omiteți schema, atunci sinonimul se referă la un obiect din schema specificată de linkul bazei de date. Oracle recomandă să specificați schema care conține obiectul în baza de date la distanță.

dacă omiteți dblink, atunci Oracle Database presupune că obiectul se află în baza de date locală.

restricție privind legăturile bazei de date nu puteți specificadblink pentru un sinonim de clasă Java.

Vezi și:

  • „referirea la obiecte din baze de date la distanță” pentru mai multe informații despre referirea la legăturile bazei de date

  • creare legătură bază de date pentru mai multe informații despre crearea legăturilor bazei de date

Exemple

creare sinonim: exemple pentru definirea sinonimuluioffices pentru tabelullocations în schemahr, emiteți următoarea declarație:

CREATE SYNONYM offices FOR hr.locations;

pentru a crea unPUBLIC sinonim pentruemployees tabel în schemahr peremote baza de date, puteți emite următoarea declarație:

CREATE PUBLIC SYNONYM emp_table FOR [email protected];

un sinonim poate avea același nume ca obiectul subiacent, cu condiția ca obiectul subiacent să fie conținut într-o altă schemă.

rezoluția bazei de date Oracle a sinonimelor: 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;

dacă utilizatorul sh emite următoarea instrucțiune, atunci baza de date returnează numărul de rânduri din sh.customers:

SELECT COUNT(*) FROM customers;

pentru a prelua numărul de rânduri din sh.customers rânduri din oe.customers, utilizatorul sh trebuie să prefațeze customers cu numele schemei. (Utilizatorul sh trebuie să aibă permisiunea de selectare pe oe.customers de asemenea.)

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;

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *