MySQL DROP TRIGGER

摘要:在本教程中,您将学习如何使用 MySQL DROP TRIGGER语句从数据库中删除触发器。

MySQL DROP TRIGGER语句简介

DROP TRIGGER语句从数据库中删除触发器。

以下是DROP TRIGGER语句的基本语法:

DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name;
Code language: SQL (Structured Query Language) (sql)

在这个语法中:

  • 首先,在DROP TRIGGER关键字后指定要删除的触发器的名称。
  • 其次,指定触发器所属模式的名称。如果跳过架构名称,该语句将删除当前数据库中的触发器。
  • 第三,如果触发器存在,则使用IF EXISTS选项有条件地删除触发器。 IF EXISTS子句是可选的。

如果在不使用IF EXISTS子句的情况下删除不存在的触发器,MySQL 会发出错误。但是,如果您使用IF EXISTS子句,MySQL 会发出一条NOTE

DROP TRIGGER需要与触发器关联的表的TRIGGER权限。

请注意,如果删除一个表,MySQL 将自动删除与该表关联的所有触发器。

MySQL DROP TRIGGER示例

首先创建一个名为billings进行演示:

CREATE TABLE billings (
    billingNo INT AUTO_INCREMENT,
    customerNo INT,
    billingDate DATE,
    amount DEC(10 , 2 ),
    PRIMARY KEY (billingNo)
);
Code language: SQL (Structured Query Language) (sql)

其次,创建一个名为BEFORE UPDATE新触发器,该触发器与billings表关联:

DELIMITER $$
CREATE TRIGGER before_billing_update
    BEFORE UPDATE 
    ON billings FOR EACH ROW
BEGIN
    IF new.amount > old.amount * 10 THEN
        SIGNAL SQLSTATE '45000' 
            SET MESSAGE_TEXT = 'New amount cannot be 10 times greater than the current amount.';
    END IF;
END$$    
DELIMITER ;
Code language: SQL (Structured Query Language) (sql)

如果您不熟悉DELIMITER语句,请查看存储过程语句中的此处。

触发器在任何更新之前激活。如果新金额比当前金额大 10 倍,触发器将引发错误。

第三,显示触发器:

SHOW TRIGGERS;
Code language: SQL (Structured Query Language) (sql)
MySQL 删除触发器示例

第四,删除before_billing_update触发器:

DROP TRIGGER before_billing_update;
Code language: SQL (Structured Query Language) (sql)

最后,再次显示触发器以验证删除:

SHOW TRIGGERS;
Code language: SQL (Structured Query Language) (sql)
删除后的 MySQL DROP TRIGGER 示例

在本教程中,您学习了如何使用 MySQL DROP TRIGGER语句从数据库中删除触发器。

本教程有帮助吗?