Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL เปลี่ยน Delimiter (ตัวจบคำสั่ง) ด้วยคำสั่ง DELIMITER

คำสั่ง DELIMITER ใช้เปลี่ยนสัญลักษณ์จบคำสั่ง SQL จากค่าเริ่มต้น ; (Semicolon) เป็นสัญลักษณ์อื่น เพื่อใช้ในการเขียน Stored Procedure, Trigger, Function ที่มีหลายคำสั่งภายใน

ไวยากรณ์

DELIMITER anySymbol

ตัวอย่างการใช้งาน

1. เปลี่ยน Delimiter เป็น //

mysql> DELIMITER //

2. สร้างตารางด้วย Delimiter ใหม่

mysql> CREATE TABLE DemoTable (
    Id INT,
    Name VARCHAR(20)
)// 
Query OK, 0 rows affected (0.52 sec)

3. เพิ่มข้อมูลด้วย Delimiter ใหม่

mysql> INSERT INTO DemoTable VALUES(100, 'Chris')//
Query OK, 1 row affected (0.21 sec)
mysql> INSERT INTO DemoTable VALUES(101, 'David')//
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable VALUES(102, 'Bob')//
Query OK, 1 row affected (1.07 sec)

4. Query ข้อมูลด้วย Delimiter ใหม่

mysql> SELECT * FROM DemoTable //
+------+-------+
| Id   | Name  |
+------+-------+
|  100 | Chris |
|  101 | David |
|  102 | Bob   |
+------+-------+
3 rows in set (0.00 sec)

5. กลับไปใช้ Delimiter ปกติ (;)

mysql> DELIMITER ;

เมื่อไหร่ต้องเปลี่ยน Delimiter?

  • เขียน Stored Procedure ที่มีหลายคำสั่ง SQL ภายใน (BEGIN ... END)
  • เขียน Trigger หรือ Function
  • รัน Script ที่มีหลาย Statement ติดกันและต้องการส่งไปรันทีเดียว

ตัวอย่าง Stored Procedure ต้องใช้ DELIMITER

DELIMITER //
CREATE PROCEDURE my_proc()
BEGIN
    SELECT 1;   -- ต้องมี ; ภายใน
    SELECT 2;   -- ต้องมี ; ภายใน
END //
DELIMITER ;

สัญลักษณ์ที่นิยมใช้

  • // (Double slash) - นิยมมากที่สุด
  • $$ (Dollar signs)
  • @@ (At signs)
  • | (Pipe)

สรุป

DELIMITER เปลี่ยนตัวจบคำสั่งชั่วคราวใน Session ปัจจุบัน ใช้ // เป็นมาตรฐาน สำคัญคือต้องเปลี่ยนกลับเป็น ; หลังจบการกำหนด Procedure/Trigger มิฉะนั้นคำสั่งปกติจะรันไม่ได้