MySQL 删除触发器

时间:2019-11-20 08:52:18  来源:igfitidea点击:

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

MySQL DROP TRIGGER语句简介

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

这是DROP TRIGGER语句的基本语法:

DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name;

使用以下语法:

  • 首先,在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)
);

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

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 ;

如果您不熟悉DELIMITER语句,请在存储过程语句中在此处进行检查。

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

第三,显示触发器:

SHOW TRIGGERS;

第四,删除before_billing_update触发器:

DROP TRIGGER before_billing_update;

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

SHOW TRIGGERS;

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