我有一个像这样的网站表:
WEBSITE
web ID | url | progress
-------------------------------
1 | example.com | 67
我有一个像这样的PROGRESS表:
PROGRESS
progress id | linking website id | amount to increase
---------------------------------------------------
1 | 1 | 60
2 | 1 | 7
使用INSERT INTO将行插入PROGRESS时,
我使用php和mysql从PROGRESS表中获取累积值,然后将新值存储到WEBSITE表的进度值中。
...无论其
我想知道我是否可以使用这些触发器,我听说会自动总结新的进度值并存储它?
这可能吗?
答案 0 :(得分:2)
你可以使用触发器,但你不需要;这样做:
update website set
progress = progress + ?
where web_id = ?
从您的查询中获取值。这保证可行,因为更新是原子的(您不必担心其他进程同时插入/更新)
答案 1 :(得分:2)
您实际上不需要使用触发器,只需将进度添加到website
中的现有行,但如果您想尝试触发器,则可以使用以下
delimiter $$
CREATE TRIGGER progress_update AFTER INSERT ON `progress`
FOR EACH ROW BEGIN
UPDATE `website` SET `progress` = `progress` + NEW.ammount_to_increase WHERE web_ID = NEW.linking_website_id;
END;
$$
delimiter ;
您还可以在手册页12.1.11. CREATE TRIGGER Syntax
中找到有关触发器语法和使用的更多信息。