การลบ Trigger อย่างปลอดภัยด้วย IF EXISTS
ใช้ DROP TRIGGER IF EXISTS เพื่อลบ trigger โดยไม่เกิด error หาก trigger ไม่มีอยู่จริง
ไวยากรณ์
DROP TRIGGER IF EXISTS your_trigger_name;
ขั้นตอนการตรวจสอบและลบ
- ดู trigger ที่มีอยู่:
SHOW TRIGGERS; - ลบ trigger:
DROP TRIGGER IF EXISTS trigger_name; - ตรวจสอบอีกครั้ง:
SHOW TRIGGERS;
ตัวอย่าง
ตรวจสอบ trigger ที่มี:
mysql> SHOW TRIGGERS;
+-------------+--------+---------------+------------------------------------------------------------------------+--------+------------------------+--------------------------------------------+---------+----------------------+----------------------+--------------------+
| Trigger | Event | Table | Statement | Timing | Created | sql_mode | Definer | character_set_client | collation_connection | Database Collation |
+-------------+--------+---------------+------------------------------------------------------------------------+--------+------------------------+--------------------------------------------+---------+----------------------+----------------------+--------------------+
| CheckSalary | INSERT | employeetable | if new.EmployeeSalary < 1000 then set new.EmployeeSalary = 10000; end if | BEFORE | 2018-12-31 17:33:29.54 | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | root@% | utf8 | utf8_general_ci | utf8mb4_0900_ai_ci |
+-------------+--------+---------------+------------------------------------------------------------------------+--------+------------------------+--------------------------------------------+---------+----------------------+----------------------+--------------------+
ลบ trigger CheckSalary:
mysql> DROP TRIGGER IF EXISTS CheckSalary;
Query OK, 0 rows affected (0.30 sec)
ตรวจสอบอีกครั้ง:
mysql> SHOW TRIGGERS;
Empty set (0.00 sec)
ข้อมูลเพิ่มเติม
IF EXISTS- ป้องกัน error 1360 (Trigger does not exist)- ต้องมีสิทธิ์
TRIGGERบนตารางที่เกี่ยวข้อง - การลบ trigger จะไม่กระทบข้อมูลที่มีอยู่แล้ว
- ใน MySQL 8.0+ สามารถระบุ database ได้:
DROP TRIGGER IF EXISTS db_name.trigger_name;
การสร้าง Trigger ใหม่ (สำหรับทดสอบ)
DELIMITER //
CREATE TRIGGER CheckSalary
BEFORE INSERT ON employeetable
FOR EACH ROW
BEGIN
IF NEW.EmployeeSalary < 1000 THEN
SET NEW.EmployeeSalary = 10000;
END IF;
END//
DELIMITER ;