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

ลบ Trigger ใน MySQL ด้วย DROP TRIGGER IF EXISTS

การลบ Trigger อย่างปลอดภัยด้วย IF EXISTS

ใช้ DROP TRIGGER IF EXISTS เพื่อลบ trigger โดยไม่เกิด error หาก trigger ไม่มีอยู่จริง

ไวยากรณ์

DROP TRIGGER IF EXISTS your_trigger_name;

ขั้นตอนการตรวจสอบและลบ

  1. ดู trigger ที่มีอยู่: SHOW TRIGGERS;
  2. ลบ trigger: DROP TRIGGER IF EXISTS trigger_name;
  3. ตรวจสอบอีกครั้ง: 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 ;