插入工作后无法触发

时间:2019-02-07 11:51:12

标签: sql triggers mariadb

插入值后,我需要更新表中的列。

我制作了触发器,插入后会执行该操作:

<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

2 个答案:

答案 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