scop
utilizațiCREATE
SYNONYM
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: SELECT
INSERT
UPDATE
DELETE
FLASHBACK
TABLE
EXPLAIN
PLAN
și LOCK
TABLE
.
puteți face referire la sinonime în următoarele declarații DDL: AUDIT
NOAUDIT
GRANT
REVOKE
ș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 sistemCREATE
SYNONYM
.
pentru a crea un sinonim privat în schema altui utilizator, trebuie să aveți privilegiul de sistem CREATE
ANY
SYNONYM
.
pentru a crea un PUBLIC
sinonim, trebuie să aveți CREATE
PUBLIC
SYNONYM
privilegiul de sistem.
sintaxă
create_synonym::=
descrierea ilustrației create_synonym.gif
semantică
sau înlocuiți
specificațiOR
REPLACE
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 clauzaOR
REPLACE
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;