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

MySQL แปลงตัวอักษรเป็นตัวเล็กอัตโนมัติด้วย Trigger

สร้าง Trigger BEFORE INSERT เพื่อแปลงค่าเป็น Lowercase อัตโนมัติ

ใช้ BEFORE INSERT TRIGGER ร่วมกับฟังก์ชัน LOWER() เพื่อแปลงค่าที่จะ Insert ให้เป็นตัวพิมพ์เล็กก่อนบันทึกลงตาราง

ตัวอย่างสร้างตาราง

CREATE TABLE DemoTable (StudentSubject TEXT);

สร้าง Trigger

CREATE TRIGGER lowerCaseOnInsertDemo 
BEFORE INSERT ON DemoTable 
FOR EACH ROW 
SET NEW.StudentSubject = LOWER(NEW.StudentSubject);

ทดสอบ Insert ข้อมูลตัวพิมพ์ใหญ่/ผสม

INSERT INTO DemoTable VALUES ('MOngoDb'), ('JaVA'), ('MySqL');

ผลลัพธ์: เก็บเป็นตัวพิมพ์เล็กทั้งหมด

+----------------+
| StudentSubject |
+----------------+
| mongodb        |
| java           |
| mysql          |
+----------------+

คำอธิบาย:

  • BEFORE INSERT ทำงานก่อน Insert จริง
  • FOR EACH ROW ทำงานต่อแถว
  • NEW.StudentSubject อ้างถึงค่าใหม่ที่จะ Insert สามารถแก้ไขได้
  • LOWER() แปลงสตริงเป็นตัวพิมพ์เล็กทั้งหมด

ขยายความสามารถ:

  • เพิ่ม BEFORE UPDATE Trigger เหมือนกัน เพื่อครอบคลุมการ UPDATE ด้วย
  • ใช้ UPPER() สำหรับตัวพิมพ์ใหญ่
  • ใช้ TRIM() ลบช่องว่างนำ/ท้าย

⚠ ข้อควรระวัง:

  • Trigger เพิ่ม Overhead ต่อแต่ละ INSERT/UPDATE
  • ควร Validate/Normalize ข้อมูลที่ Application Layer ก่อน ส่งมาแล้วถูกต้องดีกว่า
  • MySQL Trigger ไม่รองรับ Transaction Rollback ภายใน Trigger (ถ้า Error จะ Rollback ทั้ง Statement)