概述
1、触发器的是什么?
触发器(trigger)是MySQL提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete, update)时就会激活它执行。
来源于百度百科
简言之:你执行一条sql语句,这条sql语句的执行会自动去触发执行其他的sql语句。
2、触发器创建的四个要素
1.(监视地点(table)
- 监视事件(insert/update/delete)
- 触发时间(after/before)
- 触发事件(insert/update/delete)
3、触发器的语法
- 查看已有触发器:show triggers
- 删除已有触发器:drop trigger triggerName
- 创建触发器:create trigger triggerName
CREATE TRIGGER tr_article_detail_info_insert BEFORE INSERT ON db_jkgg.article_detail_info FOR EACH ROW
BEGIN
SET NEW.view_number = FLOOR(200 + (RAND() * 501));
END;
4、触发器可以使用的MySQL版本:
版本:MySQL5以上
5、使用场景例子:
- 每当增加一个顾客到某个数据库表时,都检查其电话号码格式是否正确,州的缩写是否为大写
- 每当订购一个产品时,都从库存数量中减去订购的数量
- 无论何时删除一行,都在某个存档表中保留一个副本
- 每当创建一篇资讯文章,要随机生成浏览次数等
即:在某个表发生更改时自动处理。
6、使用案例
内容管理系统有这样一个需求,当新增一篇资讯文章时候,同时生成一个随机的浏览数量。
6.1 创建article_detail_info
表
-- 资讯文章的表结构
CREATE TABLE `article_detail_info` (
`article_id` int(11) NOT NULL AUTO_INCREMENT,
`keywords` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '关键字',
`description` varchar(5000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'description 文章导读',
`article_url` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '文章的url',
`author` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '作者',
`title` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '标题',
`source` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '来源',
`image` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '主图片',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`view_number` int(11) DEFAULT '0' COMMENT '浏览量',
`share_view` int(11) DEFAULT '0' COMMENT '分享量',
`attribute` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '文章属性 1 首页推荐 2 原创',
`audit_status` tinyint(11) DEFAULT NULL COMMENT '审核状态 1 待审核 2 审核通过 3 审核不通过',
`static_file_url` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '静态化后文件存储路径',
`is_delete` tinyint(4) DEFAULT '1' COMMENT '删除 0 删除 1 未删除',
`is_top` tinyint(4) DEFAULT '0' COMMENT '是否指定 0 正常 1 置顶',
`tags` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '标签',
`is_original` tinyint(4) DEFAULT '0' COMMENT '是否原创 0 不是 1是',
`is_hpr` tinyint(4) DEFAULT '0' COMMENT '是否首页推荐 0 否 1是',
`is_vedio` tinyint(4) DEFAULT '0' COMMENT '是否视频 ',
`vedio_url` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '视频url',
`vedio_cover_url` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '视频封面url',
PRIMARY KEY (`article_id`)
) ENGINE=InnoDB AUTO_INCREMENT=822 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文章详情';
6.2 创建触发器tr_article_detail_info_insert
-- 为表article_detail_info创建触发器 自动生成200-500的随机数作为浏览量
CREATE TRIGGER `tr_article_detail_info_insert` BEFORE INSERT ON `article_detail_info` FOR EACH ROW BEGIN
SET NEW.view_number = FLOOR(200 + (RAND() * 501));
END;
6.3 验证结果
6.3.1 插入数据
INSERT INTO `db_jkgg`.`article_detail_info` ( `keywords`, `description`,`article_url`, `author`, `title`, `source`, `image`, `create_time`, `update_time`, `share_view`, `attribute`, `audit_status`, `static_file_url`, `is_delete`, `is_top`, `tags`, `is_original`, `is_hpr`, `is_vedio`, `vedio_url`, `vedio_cover_url`) VALUES (NULL, NULL, '/article/20181116/content-819.html', '宋', '尿酸其实并不神秘', '痛风', NULL, '2018-11-16 15:22:35', NULL, '0', NULL, '0', NULL, '1', '0', NULL, '0', '0', '1', NULL, NULL);
6.3.2 查看数据库已经生成浏览量
SELECT article_id,title,view_number FROM article_detail_info ORDER BY article_id desc LIMIT 1
生成一个条记录并且浏览量是292
最后
以上就是痴情铃铛为你收集整理的MySQL触发器概念、原理与用法的全部内容,希望文章能够帮你解决MySQL触发器概念、原理与用法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复