我是Triggers的新手,但我认为我的代码需要一个代码:
CREATE TABLE `events` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`device_id` varchar(15) DEFAULT NULL,
`event_type` varchar(15) DEFAULT NULL,
`event_value` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4987 DEFAULT CHARSET=utf8$$
CREATE TABLE `sequence` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`device_id` varchar(15) DEFAULT NULL,
`values_sum` varchar(15) DEFAULT NULL,
`event_value` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4987 DEFAULT CHARSET=utf8$$
我需要在插入一行事件表时检查event_type是1还是2
如果1我需要在第二个表中复制第一个数据并添加每1个事件直到 下一次插入event_type将是2 ..
我不知道怎么做,欢迎任何帮助...
答案 0 :(得分:1)
这里有一些示例语法可以帮助您入门。
您需要在values_sum
表的sequence
列中弄清楚要存储的内容。
此外,下面的触发器是将事件表中的id
值复制到序列表中,如果某些其他进程插入并生成新的id值,那么这将是一个问题(即重复键异常)在sequence
表中。
DELIMITER $$
CREATE TRIGGER `trg_events_ai`
AFTER INSERT ON `events`
FOR EACH ROW
BEGIN
IF NEW.event_type = 1 THEN
INSERT INTO `sequence` (`id`, `device_id`, `values_sum`, `event_value`)
VALUES NEW.id, NEW.device_id, NULL, NEW.event_value);
END IF;
END$$
DELIMITER ;
此示例触发器将在插入事件表后“触发”。对于插入到event_type列为1的事件表中的任何行,此触发器将针对序列表发出相应的INSERT。应该足以让你入门。