|
|
|
|---|---|
|
Oft ist es wünschenswert mit verschiedenen Versionen von Tabellen zu arbeiten. Da jedes Objekt einem bestimmten Oracle-Schema angehört, können auf einfache Weise mehrere Tabellen mit dem gleichen Namen benutzt werden. Auf die DEFAULT-Tabellen werden PUBLIC Synonyme gelegt, auf die anderen Tabellen legt jeder Oracle Benutzer seine eigenen PRIVATE Synonyme. PRIVATE Synonyme übersteuern immer die PUBLIC Synonyme. Um also verschieden Tabelle mit dem gleichen Namen anzusprechen gibt es zwei Möglichkeiten: 1). Direkt via Schema-Namen ansprechen
Beispiel:
SELECT COUNT(*) FROM scott.emp;
2). Privates Synonym erstellen
Beispiel:
a). Connecten unter dem gewünschten Account
sqlplus zahn/<pwd>
SQL> describe emp;
Name Null? Type
------------------------------- -------- ----
EMPNO NOT NULL NUMBER(4)
ENAME CHAR(10)
JOB CHAR(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NOT NULL NUMBER(2)
Die DEFAULT Tabelle scott.emp ist ersichtlich via
PUBLIC Synonym.
b). Privates Synonym erstellen
SQL> CREATE SYNONYM emp FOR zahn.emp;
SQL> DESCRIBE emp;
Name Null? Type
------------------------------- -------- ----
EMPNO NOT NULL NUMBER(4)
ENAME CHAR(10)
JOB CHAR(9)
MGR NUMBER(4)
COMM NUMBER(7,2)
DEPTNO NOT NULL NUMBER(2)
Die eigene Tabelle emp ist ersichtlich (es fehlen
die Felder HIREDATE und SAL). Damit wird das
PUBLIC Synonym für den aktuellen Benutzer
übersteuert und man sieht unter emp dann
effektiv die Tabelle zahn.emp.
c). Wieder zurückwechseln
Wenn man das Synonym nicht mehr braucht, dann dieses
wieder löschen.
SQL> DROP SYNONYM emp;
SQL> desc emp;
SQL> describe emp;
Name Null? Type
------------------------------- -------- ----
EMPNO NOT NULL NUMBER(4)
ENAME CHAR(10)
JOB CHAR(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NOT NULL NUMBER(2)
Nun erscheint wieder die DEFAULT Tabelle scott.emp.
|
|