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

สร้าง Stored Procedure ที่สร้างตารางใน MySQL

ใช้ CREATE PROCEDURE พร้อม DELIMITER เพื่อสร้าง Stored Procedure ที่รัน CREATE TABLE

สร้าง Stored Procedure

mysql> DELIMITER //
mysql> CREATE PROCEDURE Stored_Procedure_CreatingTable()
    -> BEGIN
    ->     CREATE TABLE DemoTable (
    ->         Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ->         UserFirstName VARCHAR(20),
    ->         UserLastName VARCHAR(20)
    ->     );
    -> END;
    -> //
Query OK, 0 rows affected (0.16 sec)
mysql> DELIMITER ;

เรียกใช้ Stored Procedure

mysql> CALL Stored_Procedure_CreatingTable();
Query OK, 0 rows affected (0.18 sec)

ตรวจสอบตารางที่สร้าง

mysql> DESC DemoTable;
+---------------+-------------+------+-----+---------+----------------+
| Field         | Type        | Null | Key | Default | Extra          |
+---------------+-------------+------+-----+---------+----------------+
| Id            | int(11)     | NO   | PRI | NULL    | auto_increment |
| UserFirstName | varchar(20) | YES  |     | NULL    |                |
| UserLastName  | varchar(20) | YES  |     | NULL    |                |
+---------------+-------------+------+-----+---------+----------------+

จุดสังเกต:

  • ต้องเปลี่ยน DELIMITER ก่อนสร้าง Procedure (ป้องกัน ; จบคำสั่งก่อนเวลา)
  • คืนค่า DELIMITER กลับเป็น ; หลังสร้างเสร็จ
  • Procedure นี้รันได้หลายครั้ง แต่ครั้งที่ 2 จะ error เพราะตารางมีอยู่แล้ว (ควรเพิ่ม IF NOT EXISTS)

เวอร์ชันปรับปรุง (ปลอดภัยกว่า)

CREATE PROCEDURE CreateDemoTable()
BEGIN
    CREATE TABLE IF NOT EXISTS DemoTable (
        Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
        UserFirstName VARCHAR(20),
        UserLastName VARCHAR(20)
    );
END;