我使用mysql触发器从插入任务表后插入贡献我需要计算总小时数( total_hours = new.hours + new.undayime )我需要从贡献表
中选择total_hours这是mysql触发即时使用但不起作用
CREATE TRIGGER update_hours AFTER INSERT ON tasks
FOR EACH ROW
BEGIN
SELECT p_id d_id hours overtime total_hours FROM contribution WHERE
p_id == new.p_id && d_id == new.d_id
new.total_hours = total_hours + new.hours + new.overtime
INSERT INTO contribution
( p_id,
d_id,
hours,
overtime,
total_hours,
contribution )
VALUES
( NEW.p_id,
NEW.d_id,
NEW.hours,
NEW.overtime,
new.total_hours,
NEW.contribution );
END IF;
END
我需要从表格贡献表中获取值并将值添加到小时和加班
我需要在添加任务小时和加班时插入贡献表。需要计算总小时数(小时+加班)并添加到贡献total_hours。
答案 0 :(得分:1)
第一步是在贡献中获得以前的总条目。 第二步是添加插入任务的新值,并添加到总计中。 第三步是将结果插入贡献中。
DELIMITER |
CREATE TRIGGER update_hours AFTER INSERT ON tasks
FOR EACH ROW
BEGIN
SET @old_total_hours = (SELECT SUM(hours + overtime)
FROM contribution
WHERE p_id == new.p_id && d_id == new.d_id
GROUP BY p_id);
SET @total_hours = @old_total_hours + new.hours + new.overtime;
INSERT INTO contribution
( p_id,
d_id,
hours,
overtime,
total_hours,
contribution )
VALUES
(
NEW.p_id,
NEW.d_id,
NEW.hours,
NEW.overtime,
@total_hours,
NEW.contribution
);
END|
DELIMITER ;