cel
użyj poleceniaCREATE
SYNONYM
, aby utworzyć synonim, który jest alternatywną nazwą dla tabeli, widoku, sekwencji, procedury, funkcji przechowywanej, pakietu, widoku zmaterializowanego, obiektu schematu klasy Java, typu obiektu zdefiniowanego przez użytkownika lub innego synonimu.Synonimy
zapewniają zarówno niezależność danych, jak i przejrzystość lokalizacji. Synonimy zezwalają aplikacjom na działanie bez zmian, niezależnie od tego, który użytkownik jest właścicielem tabeli lub widoku i niezależnie od bazy danych, w której znajduje się tabela lub widok. Synonimy nie zastępują jednak uprawnień dla obiektów bazy danych. Przed użyciem synonimu należy przyznać użytkownikowi odpowiednie uprawnienia.
możesz odnosić się do synonimów w następujących wyrażeniach DML: SELECT
INSERT
UPDATE
DELETE
FLASHBACK
TABLE
EXPLAIN
PLAN
I LOCK
TABLE
.
możesz odnosić się do synonimów w następujących wyrażeniach DDL: w celu uzyskania bardziej szczegółowych informacji należy skontaktować się z biurem obsługi klienta pod adresem:
Zobacz także:
Oracle Database Concepts dla ogólnych informacji o synonimach
wymagania wstępne
aby utworzyć prywatny synonim we własnym schemacie, musisz miećCREATE
SYNONYM
uprawnienia systemowe.
aby utworzyć prywatny synonim w schemacie innego użytkownika, musisz miećCREATE
ANY
SYNONYM
uprawnienia systemowe.
aby utworzyć synonimPUBLIC
, musisz miećCREATE
PUBLIC
SYNONYM
przywilej systemowy.
składnia
create_synonym::=
opis ilustracji create_synonym.gif
semantyka
lub zastąp
OkreślOR
REPLACE
, aby ponownie utworzyć synonim, jeśli już istnieje. Użyj tej klauzuli, aby zmienić definicję istniejącego synonimu bez wcześniejszego upuszczenia go.
ograniczenie zastępowania synonimu nie można używać klauzuli OR
REPLACE
dla synonimu typu, który ma jakiekolwiek zależne tabele lub zależne prawidłowe typy obiektów zdefiniowane przez użytkownika.
PUBLIC
podaj PUBLIC
, aby utworzyć publiczny synonim. Publiczne synonimy są dostępne dla wszystkich użytkowników. Jednak każdy użytkownik musi mieć odpowiednie uprawnienia do obiektu bazowego, aby użyć synonimu.
podczas rozwiązywania odniesień do obiektu, Oracle Database używa publicznego synonimu tylko wtedy, gdy obiekt nie jest poprzedzony schematem i nie następuje po nim łącze do bazy danych.
jeśli pominiesz tę klauzulę, to synonim jest prywatny i jest dostępny tylko w ramach swojego schematu. Prywatna nazwa synonimu musi być unikalna w swoim schemacie.
uwagi dotyczące synonimów publicznych poniższe uwagi dotyczą synonimów publicznych:
-
jeśli utworzysz publiczny synonim, który następnie będzie miał zależne tabele lub zależne ważne typy obiektów zdefiniowane przez użytkownika, to nie możesz utworzyć innego obiektu bazy danych o tej samej nazwie co synonim w tym samym schemacie co obiekty zależne.
-
uważaj, aby nie tworzyć publicznego synonimu o tej samej nazwie, co istniejący schemat. Jeśli to zrobisz, wszystkie jednostki PL/SQL, które używają tej nazwy, zostaną unieważnione.
schemat
Określ schemat, aby zawierał synonim. Jeśli pominieszschema
, to Oracle Database utworzy synonim we własnym schemacie. Nie można określić schematu dla synonimu, jeśli podano PUBLIC
.
synonim
podaj nazwę synonimu, który ma zostać utworzony.
Uwaga:
Synonimy dłuższe niż 30 bajtów mogą być tworzone i usuwane. Jednak o ile nie reprezentują nazwy Javy, nie będą działać w żadnym innym poleceniu SQL. Nazwy dłuższe niż 30 bajtów są przekształcane w niejasny krótszy łańcuch do przechowywania w słowniku danych.
Zobacz też:
„Utwórz synonim: Przykłady „i” Oracle Database Resolution of Synonyms: Example ”
Dla klauzuli
określa obiekt, dla którego synonim jest tworzony. Obiekt schematu, dla którego tworzysz synonim, może mieć następujące typy:
-
tabela lub obiekt tabela
-
widok lub widok obiektu
-
Sekwencja
-
procedura składowana, funkcja lub pakiet
-
zmaterializowany widok
-
obiekt Java class schema
-
typ obiektu zdefiniowany przez użytkownika
-
synonim
obiekt schematu nie musi obecnie istnieć i nie trzeba mieć uprawnień dostępu do obiektu.
ograniczenie klauzuli FOR obiekt schematu nie może być zawarty w pakiecie.
schema określa schemat, w którym znajduje się obiekt. Jeśli nie kwalifikujesz obiektu z schema
, to baza danych zakłada, że obiekt schematu znajduje się w twoim własnym schemacie.
Jeśli tworzysz synonim procedury lub funkcji w zdalnej bazie danych, musisz określićschema
w tej instrukcjiCREATE
. Alternatywnie można utworzyć lokalny publiczny synonim w bazie danych, w której znajduje się obiekt. Jednak łącze do bazy danych musi być włączone we wszystkich kolejnych wywołaniach procedury lub funkcji.
dblink możesz określić pełne lub częściowe łącze do bazy danych, aby utworzyć synonim obiektu schematu w zdalnej bazie danych, w której znajduje się obiekt. Jeśli podasz dblink
I pominiesz schema
, wtedy synonim odnosi się do obiektu w schemacie określonym przez łącze do bazy danych. Oracle zaleca określenie schematu zawierającego obiekt w zdalnej bazie danych.
Jeżeli pominieszdblink
, wtedy Oracle Database zakłada, że obiekt znajduje się w lokalnej bazie danych.
ograniczenie linków do bazy danych nie można określić dblink
dla synonimu klasy Java.
Zobacz także:
-
„odnoszenie się do obiektów w zdalnych bazach danych” aby uzyskać więcej informacji na temat odnoszenia się do linków do baz danych
-
Utwórz łącze do bazy danych aby uzyskać więcej informacji na temat tworzenia łączy do bazy danych
przykłady
Utwórz synonim: przykłady do zdefiniowania synonimuoffices
dla tabelilocations
w schemaciehr
wydaj następujące polecenie:
CREATE SYNONYM offices FOR hr.locations;
aby utworzyćPUBLIC
synonim dlaemployees
tabela w schemaciehr
naremote
bazy danych, możesz wydać następujące polecenie:
CREATE PUBLIC SYNONYM emp_table FOR [email protected];
synonim może mieć taką samą nazwę jak obiekt bazowy, pod warunkiem, że obiekt bazowy jest zawarty w innym schemacie.
rozwiązywanie baz danych Oracle synonimów: 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;
Jeśli użytkowniksh
wyda następującą instrukcję, wtedy baza danych Zwraca liczbę wierszy zsh.customers
:
SELECT COUNT(*) FROM customers;
, aby pobrać liczbę z wierszy zoe.customers
, użytkowniksh
musi poprzedzaćcustomers
z nazwą schematu. (Użytkownik sh
musi również mieć uprawnienia select na 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;