我已经搜索了很多,但似乎找不到答案。我对MySQL相当陌生,这是我以前作为php脚本编写的用于更新单个表的内容,但是宁愿它在表更改时在数据库上自动更新。
当我通过google脚本更新表时,然后需要按日期从主表中的不同行中更新大约6个不同的表,并且每个表都需要来自不同列的数据。
我知道这不是正确的方法,但是我需要触发器来有效地执行以下操作;
CREATE TRIGGER dash_1
ON global_summary AFTER UPDATE
UPDATE widget_dash_2 (date, metric)
WHERE inc_id=100 SELECT date, volume
FROM global_summary
WHERE (`date` = SUBDATE(CURDATE(), 1))
UPDATE widget_dash_2 (date, metric)
WHERE inc_id=101 SELECT date, volume
FROM global_summary
WHERE (`date` = SUBDATE(CURDATE(), 8))
这将用于表“ global_summary”中的“ volume”列之一,然后我需要添加其他5个更新,例如;
UPDATE widget_dash_3 (date, metric)
WHERE inc_id=100 SELECT date, score
FROM global_summary
WHERE (`date` = SUBDATE(CURDATE(), 1))
UPDATE widget_dash_3 (date, metric)
WHERE inc_id=101 SELECT date, score
FROM global_summary
WHERE (`date` = SUBDATE(CURDATE(), 8))
“得分”是表“ global_summary”中的另一列。
任何指导将不胜感激。几天来,我一直在寻找有关此方面的指导,这使我更加困惑。
我假设我需要对数组做一些事情,并且最初要从主表中获取所有数据,但是我该如何处理呢?
@粘性位
不幸的是,我不得不将此数据放入这些小表中,相信我,我宁愿直接将其从global_summary中提取。
CREATE TABLE `global_summary` (
`id` int(11) DEFAULT NULL,
`date` date DEFAULT NULL,
`volume` int(10) DEFAULT NULL,
`volume_problem` int(10) DEFAULT NULL,
`removed` int(10) DEFAULT NULL,
`score` int(10) DEFAULT NULL,
`error` int(10) DEFAULT NULL,
`total` int(10) DEFAULT NULL,
`previous` int(10) DEFAULT NULL,
`entryID` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
所有widget_dash表;
CREATE TABLE `widget_dash_2` (
`inc_id` int(11) NOT NULL,
`date` date DEFAULT NULL,
`metric` int(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
到目前为止,感谢您的反馈,是的,我可能将UPDATE与INSERT混淆了。