插入值后,我需要更新表中的列。
我制作了触发器,插入后会执行该操作:
<script src="https://unpkg.com/@reactivex/rxjs@6.4/dist/global/rxjs.umd.js"></script>
但是无法正常工作..而且我不知道我在做什么错:/
表架构是这样的:
DELIMITER ;;
CREATE TRIGGER `work_ai` AFTER INSERT ON `work` FOR EACH ROW
BEGIN
UPDATE work w SET w.time_sum = new.time_sum WHERE w.id = new.id;
END;;
DELIMITER ;
样本数据:
DROP TABLE IF EXISTS `work`;
CREATE TABLE `work` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`admin_id` int(11) unsigned NOT NULL,
`task_id` int(11) DEFAULT NULL,
`client_id` int(11) DEFAULT NULL,
`type` enum('job','break','lunch') NOT NULL DEFAULT 'job',
`from` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`to` datetime DEFAULT NULL,
`comment` varchar(255) DEFAULT NULL,
`invoice` time DEFAULT NULL,
`rate` int(11) NOT NULL DEFAULT '800',
`locked` tinyint(1) DEFAULT '0',
`time_sum` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `admin_id` (`admin_id`),
KEY `task_id` (`task_id`),
KEY `client_id` (`client_id`),
CONSTRAINT `work_ibfk_1` FOREIGN KEY (`admin_id`) REFERENCES `admins` (`id`),
CONSTRAINT `work_ibfk_2` FOREIGN KEY (`task_id`) REFERENCES `tasks` (`id`),
CONSTRAINT `work_ibfk_3` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
= 2019-01-08 10:45:00
to
= 2019-01-08 09:15:00
结果将是01:30:00
答案 0 :(得分:1)
因此,由于id
是主键,因此要实现的是在向表工作中插入行之后,您想要使用同一表中的同一主键更新现有行的time_sum值,刚刚插入的行中的time_sum值???
这就是触发器中的UPDATE语句明确说明的内容,但这只是不进行计算。充其量是毫无意义的。
因此请再次尝试解释您想要/需要的东西。
答案 1 :(得分:0)
我解决了。
BEGIN
IF (NEW.to) THEN
SET NEW.diff = TIMEDIFF(NEW.to,NEW.from);
END IF;
END