mysql触发器怎么写
时间 : 2023-03-08 02:31:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

1. 触发器的语法

创建MySQL触发器的语法如下:

CREATE TRIGGER trigger_name

trigger_time trigger_event

ON table_name FOR EACH ROW

BEGIN

-- 触发器代码

END;

其中,`trigger_name`是触发器的名称,`trigger_time`指定触发器的执行时间,可以是BEFORE或AFTER,`trigger_event`指定触发事件,可以是INSERT、UPDATE或DELETE。

`table_name`是触发器要绑定到的表名,`FOR EACH ROW`表示这是一个行级别上的触发器,触发器中的代码将在每一行被修改时都会执行。

在`BEGIN`和`END`之间是触发器执行的SQL语句,可以包括INSERT、UPDATE、DELETE、SELECT等语句。

2. 触发器的类型

MySQL触发器有两种类型:行级别和语句级别。

行级别触发器会在每一行数据***入、更新、删除时触发,它们可以读取和修改正在修改的行的值。而语句级别触发器则会在SQL语句执行完成后触发,它们仅能访问和修改表的数据,而不是正在被修改的行。

3. 创建一个触发器示例

下面是一个在表student上创建的一个行级别的触发器,用于在插入或更新数据时将年龄字段的值限制在18到25岁之间:

CREATE TRIGGER check_age

BEFORE INSERT OR UPDATE ON student

FOR EACH ROW

BEGIN

IF NEW.age < 18 THEN

SET NEW.age = 18;

ELSEIF NEW.age > 25 THEN

SET NEW.age = 25;

END IF;

END;

这个触发器名为`check_age`,在每一次插入或更新student表中的数据时都会被触发。它会检查新行中的age字段的值是否小于18或大于25,如果是,就会将其修正为18或25。

4. 删除触发器

可以通过如下命令来删除MySQL触发器:

DROP TRIGGER trigger_name;

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

5. 总结

本文介绍了MySQL触发器的语法、类型以及一个实例,希望能够帮助大家更好的理解和应用MySQL触发器。呈上完整代码,以供参考:

CREATE TRIGGER check_age

BEFORE INSERT OR UPDATE ON student

FOR EACH ROW

BEGIN

IF NEW.age < 18 THEN

SET NEW.age = 18;

ELSEIF NEW.age > 25 THEN

SET NEW.age = 25;

END IF;

END;

DROP TRIGGER check_age;