ฟังก์ชัน CONNECTION_ID() ใน MySQL ใช้เพื่อคืนค่า “หมายเลขการเชื่อมต่อ” (Connection ID) ของการเชื่อมต่อปัจจุบันกับเซิร์ฟเวอร์ MySQL
ทุกครั้งที่มีการเชื่อมต่อใหม่ (เช่น ผ่าน phpMyAdmin, MySQL CLI, หรือแอปพลิเคชัน) ระบบจะกำหนดหมายเลขเฉพาะให้หนึ่งตัว
ฟังก์ชันนี้เหมาะสำหรับใช้ในการตรวจสอบการเชื่อมต่อ, การดีบัก, หรือใช้คู่กับ INFORMATION_SCHEMA.PROCESSLIST เพื่อดูรายละเอียด connection อื่น ๆ
ประโยชน์ของฟังก์ชัน CONNECTION_ID()
- ตรวจสอบหมายเลขการเชื่อมต่อของ session ปัจจุบัน
- ใช้ร่วมกับ
SHOW PROCESSLISTเพื่อตรวจสอบหรือ kill connection ตัวเอง - เหมาะสำหรับการติดตาม session ของผู้ใช้ในระบบที่มีการเชื่อมต่อพร้อมกันจำนวนมาก
- ใช้ตรวจสอบปัญหาการเชื่อมต่อหรือ lock ที่เกิดขึ้น
- ใช้บันทึก session log ในระบบ audit trail
รูปแบบการใช้งาน
CONNECTION_ID()
ตัวอย่างการใช้งาน
SQL
SELECT CONNECTION_ID() AS my_connection;
-- ตัวอย่างผลลัพธ์: 1082ตัวอย่างการประยุกต์ใช้งาน
สมมติว่ามีตารางชื่อ user_logs ซึ่งเก็บข้อมูลดังนี้
| log_id | user_id | login_time | conn_id |
|---|---|---|---|
| 1 | 101 | 2024-04-10 09:30:00 | 1056 |
| 2 | 102 | 2024-04-10 09:31:45 | 1061 |
แทรก session log พร้อมหมายเลข connection เข้าไปในตาราง
SQL
INSERT INTO user_logs (user_id, login_time, conn_id)
VALUES (103, NOW(), CONNECTION_ID());ดูหมายเลข connection ของตัวเอง
SQL
SELECT CONNECTION_ID() AS current_connection;หมายเหตุ
- หมายเลข
CONNECTION_ID()จะเปลี่ยนใหม่ทุกครั้งที่มีการเชื่อมต่อ - หากเปิดหลาย connection พร้อมกัน (เช่น MySQL CLI + phpMyAdmin) แต่ละหน้าจะมี
connection_idต่างกัน CONNECTION_ID()เป็นของ session ปัจจุบันเท่านั้น ไม่สามารถใช้ดู session อื่นได้โดยตรง (ต้องใช้SHOW PROCESSLIST)- อย่าใช้
CONNECTION_ID()เป็นPRIMARY KEYหรือIDสำหรับการอ้างอิงข้อมูลถาวร เพราะมันไม่ถาวรและเปลี่ยนทุกครั้ง