当前位置: 首页> 汽车> 维修 > 编程自学网_网站设计论文结束语_上海百度研发中心_全网热搜榜

编程自学网_网站设计论文结束语_上海百度研发中心_全网热搜榜

时间:2025/7/9 13:24:13来源:https://blog.csdn.net/jhgfvjfggff_fds_f/article/details/142599143 浏览次数: 0次
编程自学网_网站设计论文结束语_上海百度研发中心_全网热搜榜

目录

    • 一、基本概述
    • 二、语法结构
    • 三、基本使用
      • 3.1 新增的触发器
      • 3.2 修改的触发器
      • 3.3 删除的触发器


一、基本概述

触发器是与表有关的数据对象,在INSERT/UPDATE/DELETE之前或者是之后,触发并执行触发器中定义的SQL语句的集合,触发器的这种特性可以在协助应用在数据库端确保数据的完整性,日志记录,数据校验等操纵。
使用别名OLD和NEW来引用触发器中发生变化的记录内容,现在的触发器只支持行级触发,不支持语句触发

  • 行级触发:每关联一行数据都会触发。
  • 语句触发:在执行这条语句时只触发一次。

二、语法结构

创建触发器

CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE
ON table_name FOR EACH ROW --- 行级触发器
BEGIN...
END;

查看触发器

SHOW TRIGGERS;

删除触发器

DROP TRIGGER 数据库名.触发器名

三、基本使用

通过触发器记录用户表的变动

创建用户表

CREATE TABLE `tb_user`  (`id` int NOT NULL AUTO_INCREMENT,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`age` int NULL DEFAULT NULL,`sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`score` decimal(10, 2) NULL DEFAULT NULL,`rq` date NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;

创建用户日志表

CREATE TABLE `user_log`  (`id` int NOT NULL AUTO_INCREMENT,`operation` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '操作类型 insert/update/delete',`operation_time` datetime NOT NULL COMMENT '操作时间',`operation_id` int NOT NULL COMMENT '操作ID',`operation_params` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作参数',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

3.1 新增的触发器

编写触发器

CREATE TRIGGER tb_user_insert_trigger AFTER INSERT ON tb_user FOR EACH ROW
BEGININSERT INTO user_log(operation, operation_time, operation_id, operation_params) VALUES ('insert', NOW(), new.id, CONCAT('插入的数据内容为id=', new.id, 'name=', new.name, 'age=',new.age,'sex=',new.sex,'score=',new.score,'rq=',new.rq));
END;

向用户表中插入数据,查看是否已经插入日志数据

INSERT INTO tb_user(name, age, sex, score, rq) VALUES ('测试触发器', 100, 1, 999999, NOW());

3.2 修改的触发器

编写触发器

CREATE TRIGGER tb_user_update_trigger AFTER UPDATE ON tb_user FOR EACH ROW
BEGININSERT INTO user_log(operation, operation_time, operation_id, operation_params) VALUES ('update', NOW(), new.id, CONCAT('更新之前的数据为id=', old.id, 'name=', old.name, 'age=',old.age,'sex=',old.sex,'score=',old.score,'rq=',old.rq,'更新之后的数据为id=', new.id, 'name=', new.name, 'age=',new.age,'sex=',new.sex,'score=',new.score,'rq=',new.rq));
END;

修改用户数据,查看是否已经插入日志数据

UPDATE tb_user SET age=2000 WHERE id=7;

3.3 删除的触发器

编写触发器

CREATE TRIGGER tb_user_delete_trigger AFTER DELETE ON tb_user FOR EACH ROW
BEGININSERT INTO user_log(operation, operation_time, operation_id, operation_params) VALUES ('delete', NOW(), new.id, CONCAT('删除之前的数据内容为id=', old.id, 'name=', old.name, 'age=',old.age,'sex=',old.sex,'score=',old.score,'rq=',old.rq));
END;

删除用户数据,查看是否已经插入日志数据

DELETE FROM tb_user WHERE id='7';
关键字:编程自学网_网站设计论文结束语_上海百度研发中心_全网热搜榜

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: