MySQL触发器篇,触发器详解

2025-10-26 10:38:10

1、创建用户表

DROP TABLE IF EXISTS `t_user`;

CREATE TABLE `t_user` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `name` varchar(50) NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;

MySQL触发器篇,触发器详解

2、创建用户信息表

DROP TABLE IF EXISTS `t_user_info`;

CREATE TABLE `t_user_info` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `uid` int(11) DEFAULT NULL,

  `age` varchar(20) DEFAULT NULL,

  `sex` varchar(20) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;

MySQL触发器篇,触发器详解

1、单个执行语句的触发器语法结构:

CREATE TRIGGER 触发器名称 触发时机(before,after) 触发事件(INSERT,UPDATE和DELETE)

ON 建立触发器的表名 FOR EACH ROW 触发器执行语句;

MySQL触发器篇,触发器详解

2、多个执行语句的触发器语法结构:

CREATE TRIGGER 触发器名称,触发时机(before,after),触发事件(INSERT,UPDATE和DELETE)

ON 建立触发器的表名 FOR EACH ROW

BEGIN

 触发器执行语句;

END;

MySQL触发器篇,触发器详解

3、示例1.

创建只有一个执行语句的触发器

CREATE TRIGGER test_tri BEFORE INSERT ON t_user FOR EACH ROW

SET @num = @num + 1;

MySQL触发器篇,触发器详解

4、测试触发器

SET @num = 0;

INSERT INTO t_user (`name`) VALUES ('甲');

INSERT INTO t_user (`name`) VALUES ('乙');

SELECT @num;

SELECT * FROM t_user;

MySQL触发器篇,触发器详解

MySQL触发器篇,触发器详解

MySQL触发器篇,触发器详解

5、示例2

创建有多个执行语句的触发器,实现在插入数据到用户表后,插入相关数据到用户信息表

CREATE TRIGGER test_tri_2 AFTER INSERT ON t_user FOR EACH ROW

BEGIN

    DECLARE user_id int(11);

    DECLARE user_age varchar(20);

    DECLARE user_sex VARCHAR(20);

    SELECT MAX(id) INTO user_id FROM t_user;

    SET user_age = user_id * 10;

    IF user_id % 2 = 0 THEN

        SET user_sex = '男';

    ELSE

        SET user_sex = '女';

    END IF;

    INSERT INTO t_user_info (uid,age,sex) VALUES (user_id,user_age,user_sex);

END

MySQL触发器篇,触发器详解

6、测试触发器

INSERT INTO t_user (`name`) VALUES ('丙');

INSERT INTO t_user (`name`) VALUES ('丁');

SELECT * FROM t_user;

SELECT * FROM t_user_info;

MySQL触发器篇,触发器详解

MySQL触发器篇,触发器详解

MySQL触发器篇,触发器详解

1、查看触发器是指查看数据库中已存在的触发器的定义,状态及语法信息,查看触发器的方法有使用 SHOW TRIGGERS 命令和在INFORMATION_SCHEMA数据库中的TRIGGERS表中查看

MySQL触发器篇,触发器详解

2、使用SHOW TRIGGERS命令

示例:

SHOW TRIGGERS;

如果使用的是命令行,请在句末加上\G 不然语句会显得混乱

MySQL触发器篇,触发器详解

3、在INFORMATION_SCHEMA数据库中的TRIGGERS表中查看

SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGER_NAME = 'test_tri_1';

MySQL触发器篇,触发器详解

1、语法结构

DROP TRIGGER [数据库名称.]触发器名称

如果省略了数据库名称,则会从当前数据库中删除触发器

MySQL触发器篇,触发器详解

2、示例

DROP TRIGGER study.test_tri;

MySQL触发器篇,触发器详解

3、删除后查看一下触发器

SHOW TRIGGERS;

MySQL触发器篇,触发器详解

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢