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语句从数据库中删除触发器。