ปกติถ้าเราจะดึงข้อมูลจาก Schema อื่น เราต้องพิมพ์ SELECT * FROM OTHER_USER.MY_TABLE; แต่ถ้าไม่อยากพิมพ์ชื่อ Schema นำหน้า มี 2 วิธีที่ช่วยได้ครับ
การเปลี่ยน Current Schema
คุณสามารถสั่งให้ Oracle มองว่า Schema หลักของเราคือคนอื่นชั่วคราวได้ครับ
ALTER SESSION SET CURRENT_SCHEMA = ชื่อ_SCHEMA_อื่น; -- หลังจากนี้สามารถ Select ได้เลยโดยไม่ต้องพิมพ์ชื่อ Schema นำหน้า
SELECT * FROM MY_TABLE;
การสร้าง Synonym
หากต้องใช้งาน Table ของ Schema อื่นบ่อย ๆ และไม่อยากพิมพ์ชื่อ Schema นำหน้าตลอดไป ให้สร้าง Synonym ครับ
CREATE SYNONYM MY_TABLE FOR OTHER_USER.MY_TABLE; -- หลังจากนี้เรียกใช้ชื่อ MY_TABLE ได้โดยตรง
SELECT * FROM MY_TABLE;
ข้อควรระวัง
- สิทธิ์ : แม้คุณจะเปลี่ยน
CURRENT_SCHEMAหรือสร้างSYNONYMแต่ถ้า User ของคุณไม่ได้รับสิทธิ์SELECTในตารางนั้น ๆ จากเจ้าของเดิม ก็จะยังเข้าถึงข้อมูลไม่ได้อยู่ดีครับ - Table ซ้ำ: หากใน Schema ของคุณมีตารางชื่อ
EMPและใน Schema อื่นก็มีEMPการใช้user_tablesจะเห็นเฉพาะของคุณเองเท่านั้น
อ่านเพิ่มเติม