DELIMITER ใน MySQL คืออะไร และเมื่อไหร่ต้องใช้
Delimiter (ตัวคั่นคำสั่ง) ค่าเริ่มต้นคือ Semicolon (;) ใช้บอก MySQL Client ว่าคำสั่งจบที่ไหน
เมื่อไหร่ต้องเปลี่ยน Delimiter?
- สร้าง Stored Procedure
- สร้าง Function
- สร้าง Trigger
- เขียน Block ที่มีหลายคำสั่ง (BEGIN ... END)
เพราะภายใน Block มี Semicolon หลายตัว หากไม่เปลี่ยน Delimiter MySQL จะคิดว่าคำสั่งจบก่อนเวลา
ตัวอย่างการใช้งาน
ตาราง GetRecordsFromNow มีข้อมูล:
| YourDateTime |
|---|
| 2018-12-07 22:30:18 |
| 2018-12-03 22:30:31 |
| 2018-12-02 22:30:41 |
| 2018-12-01 22:30:56 |
| 2018-12-03 22:31:04 |
สร้าง Stored Procedure ด้วย Delimiter //:
DELIMITER //
CREATE PROCEDURE DisplayALL()
BEGIN
SELECT * FROM GetRecordsFromNow;
END //
DELIMITER ;
เรียกใช้ Procedure:
CALL DisplayALL();
ผลลัพธ์: แสดงข้อมูลทั้ง 5 แถวเหมือนเดิม
Delimiter ที่นิยมใช้
//- นิยมมากที่สุด$$- ใช้ใน PostgreSQL เช่นกัน||- น้อยกว่า
ขั้นตอนสรุป
DELIMITER //- เปลี่ยนตัวคั่นเป็น //- เขียน CREATE PROCEDURE/FUNCTION/TRIGGER ใช้ ; ภายในได้ตามปกติ
- จบ Block ด้วย
// DELIMITER ;- คืนค่าเดิม
หมายเหตุ: DELIMITER เป็นคำสั่งของ MySQL Client (mysql, mysqlsh, Workbench) ไม่ใช่คำสั่ง SQL มาตรฐาน