发射扳机我的问题如下:避免另一个触发在MYSQL
- 表A中包含“任务”
- 表B中包含“TaskProgress”的列表 - 只是一个大约花费在任务时间的信息,用户ID,任务ID和注意
在表A(任务),我有触发,这将更新上次更改的日期时间 - 列DateChanged(为了捕捉编辑的日期时间由用户制造)
表B(TaskProgress)我有触发,这将更新花费在任务总时间(和所有时间内给予TASK_ID和更新列TOTALTIME表A)
我希望在表A中,只有当用户mades更新DateChanged更新(每次除了当表B上的触发器更新TotalTime时)
所以我想知道是否有办法告诉数据库在更新另一个触发器中的值时不触发TRIGGER。
/* set date of last change and date od closing of task */
DELIMITER $$
CREATE TRIGGER before_tasks_update
BEFORE UPDATE ON tasks
FOR EACH ROW BEGIN
SET new.DateChanged = NOW();
IF new.Status_ID = 3 THEN
SET new.DateClosed = NOW();
END IF;
END$$
DELIMITER ;
/* set total time spent on task */
DELIMITER $$
CREATE TRIGGER after_taskprogress_insert
AFTER INSERT ON taskprogress
FOR EACH ROW BEGIN
DECLARE sumtime TIME;
SET @sumtime := (SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(`timeSpent`)))
FROM taskprogress WHERE Task_ID = new.Task_ID);
UPDATE `tasks` SET TimeReal = @sumtime WHERE ID = new.Task_ID;
END $$
DELIMITER ;
我使用MySQL 40年5月5日
感谢,兹比涅克
用户更新任务是否涉及修改TimeReal列? – Mihai 2015-02-23 12:06:23
不,用户不应该更新TimeReal,我想避免发送时间从客户机到服务器 – Zbynek 2015-02-23 12:29:35