Oracle DBA & All IT » Database, DBA, DBA, ORA-Error, Oracle Tips, Tuning Performance » Synonyms คืออะไร??
Synonyms คืออะไร??
หลายๆคนอาจจะเคยเจอปัญหาเช่นนี้…
21:13:58 SQL> select * from emp;
select * from emp
*
ERROR at line 1:
ORA-00942: table or view does not exist
และเมื่อลองมาค้นหาสาเหตุกันด้วย query ด้านล่าง
21:14:07 SQL> select table_name from user_tables where table_name='EMP';
no rows selected
โอเค Table นี้ของเราไม่มีอยู่นี่เอง คราวนี้มาดู query ด้านล่างบ้าง
21:17:17 SQL> select owner,table_name from dba_tables where table_name='EMP';
OWNER TABLE_NAME
———- ——————————
SCOTT EMP
คราวนี้เรารู้แล้วว่า Table นี้อยู่บน owner SCOTT เราก็สามารถที่จะ Query ดูข้อมูลได้แล้ว (ภายได้เงื่อนไขว่าเราต้องมีสิทธิ์บน Table นั้นด้วย)
21:18:25 SQL> select * from scott.emp;
A
—————
1
2
3
ตอนนี้ถ้าเราต้องการที่จะ Select table emp เราจะต้องทำการ ใส่ owner scott. ข้างหน้าเสมอ ซึ่งยุ่งยากและเสียเวลา เราก็สามารถสร้างชื่อเล่นให้กับ emp ของ scott ได้
โดยการสร้าง synonym เพื่ออ้างถึง table scott.emp
create public synonym emp for scott.emp;
แล้วคราวนี้มาลองเรียกใช้ใหม่ก็จะสามารถเห็น table ของ scott เรียบร้อย
21:20:25 SQL> select * from emp;
A
—————
1
2
3
ลำดับในการเรียกใช้ synonym
1. ถ้าเรามีชื่อ table เดียวกับของคนอื่นที่ทำเป็น public synonym ไว้ เวลาที่ Query ข้อมูล จะเห็นที่ Object ของเราก่อนเสมอ
2.ถ้าเราไม่มีชื่อ table เดียวกับของคนอื่นที่ทำเป็น public synonym ไว้ แต่มีการสร้าง private synonym ไว้ เวลาที่ Query ข้อมูล จะเห็นที่ Private synonym ของเราก่อนเสมอ
ตัวอย่างการสร้าง private synonym (เป็นชื่อที่เราใช้ได้คนเดียว คนอื่นไม่มีสิทธิ์)
create synonym salee.test_emp for scott.emp;
เมื่อ connect ด้วย user salee
เมื่อ select * from test_emp; ก็คือการไป select * from scott.emp; นั่นเอง
3.ถ้าเราไม่มี Private synonym วลาที่ Query ข้อมูล ถึงจะไปใช้ Public synonymก่อนเสมอ
เมื่อใดที่เราเบื่อชื่อนี้แล้วเราก็สามารถ drop ทิ้งได้เลย
drop [pulic] synonym emp;
หมายเหตุ 1 object สามารถมีได้หลาย synonym
Related Search:
- synonyms คือ
- synonym คืออะไร
- synonym ตัวอย่าง
- synonym
- synonyms คืออะไร
- synonymคือ
- ตัวอย่าง synonym
- synonyms ตัวอย่าง
- synonym มีอะไรบ้าง
- synonymsคืออะไร
Filed under: Database, DBA, DBA, ORA-Error, Oracle Tips, Tuning Performance · Tags: create public synonym, ora-00942, ORA-00942: table or view does not exist, private synonym, synonym