mysql数据库配置触发器实现数据更新

作者: 管理员 分类: 系统运维,软件工具 发布时间: 2020-10-22 00:32
目的:将表一里面最新插入的数据更新到表二id为1的记录上

数据记录表一 表结构

-- ----------------------------
-- Table structure for pi_science
-- ----------------------------
DROP TABLE IF EXISTS `pi_science`;
CREATE TABLE `pi_science` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `temperature` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '温度',
  `humidity` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '湿度',
  `pressure` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '气压',
  `date` datetime DEFAULT NULL COMMENT '上报时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1480 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
DROP TRIGGER IF EXISTS `test`;
DELIMITER ;;
CREATE TRIGGER `test` AFTER INSERT ON `pi_science` FOR EACH ROW begin 
  update pi_science_up set temperature=new.temperature,humidity=new.humidity,pressure=new.pressure,date=new.date where id=1;
end
;;
DELIMITER ;

数据显示表二 表结构

-- ----------------------------
-- Table structure for pi_science_up
-- ----------------------------
DROP TABLE IF EXISTS `pi_science_up`;
CREATE TABLE `pi_science_up` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `temperature` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `humidity` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `pressure` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- ----------------------------
-- Records of pi_science_up
-- ----------------------------
INSERT INTO `pi_science_up` VALUES ('1', '32.30°C', '15.35%RH', '410.76hPa', '2020-10-22 00:18:02');

打开我们的navicat工具,进入到表一进行表设计,在表设计里面可以看到新增触发器,如下图:

如上图进行实在,在下面定义填写如何进行触发

begin 
  update pi_science_up set temperature=new.temperature,humidity=new.humidity,pressure=new.pressure,date=new.date where id=1;
end

特别注意里面的new.这个是代表触发的数据,必须填写,不然数据不会得到更新,定义完成后保存,等待表一里面有新的数据插入,插入的数据会更新到表二id为1的记录上,教程结束。


发表评论

电子邮件地址不会被公开。