Mysql 简明教程

MySQL - DROP TRIGGER

MySQL 中的触发器类似于过程,是一些存储程序。它们可以在与事件关联的表、架构、视图和数据库上创建,并且每当事件发生时便会调用相应的触发器。

在实际上,触发器编写为对以下任一事件响应而执行:

  1. 数据库操作语言 (DML) 语句 (DELETE、INSERT 或 UPDATE)

  2. 数据库定义语言 (DDL) 语句 (CREATE、ALTER 或 DROP)

  3. 数据库操作 (SERVERERROR、LOGON、LOGOFF、STARTUP 或 SHUTDOWN)

您可以使用 DROP TRIGGER 语句删除触发器。

Dropping Trigger in MySQL

MySQL 中的 DROP TRIGGER 语句将从数据库中删除触发器及其所有信息。

Syntax

以下是 MySQL DROP TRIGGER 语句的语法。

DROP TRIGGER [IF EXISTS] trigger_name

其中,trigger_name 是您需要删除的触发器的名称。

Example

假设我们创建了一个名为 student 的表,如下所示:

CREATE TABLE STUDENT(
   Name varchar(35),
   Age INT,
   Score INT
);

以下查询在此表上创建了一个名为 sample_trigger 的触发器。如果您输入的值小于 0,则此触发器会将分数值设置为 0 分。

DELIMITER //
CREATE TRIGGER sample_trigger
BEFORE INSERT ON STUDENT
FOR EACH ROW
BEGIN
   IF NEW.score < 0 THEN SET NEW.score = 0;
END IF;
END //
DELIMITER ;

现在,让我们使用以下查询来删除我们在上一步中创建的触发器:

DROP TRIGGER sample_trigger;

Verification

为了验证触发器是否已被删除,让我们使用以下查询显示触发器信息:

SHOW TRIGGERS\G

由于我们已经删除了所创建的触发器,因此得到一个空集:

Empty set (0.11 sec)

With IF EXISTS clause

如果您尝试删除不存在的触发器,将会生成如下所示的错误:

DROP TRIGGER demo;

输出如下:

ERROR 1360 (HY000): Trigger does not exist

如果您按照下面所示,将 IF EXISTS 子句与 DROP TRIGEGR 语句一起使用,则将删除指定的触发器;如果具有给定名称的触发器不存在,则将忽略此查询。

DROP TRIGGER IF EXISTS demo;

Dropping Trigger Using a Client Program

除了创建或显示触发器之外,我们还能够使用客户端程序删除触发器。

Syntax

Example

以下是这些程序 −