Mysql 如何使用触发器从正在更新的表中的行中获取特定数据来更新多个表?

Mysql 如何使用触发器从正在更新的表中的行中获取特定数据来更新多个表?,mysql,sql,mariadb,Mysql,Sql,Mariadb,我找了不少,似乎找不到这个问题的答案。我是MySQL的新手,这是我以前编写的php脚本,用于更新各个表,但我更希望它在表更改时在数据库上自动更新 当我通过google脚本更新一个表时,我需要从主表的不同行按日期更新大约6个不同的表,每个表需要来自不同列的数据 我知道这不是正确的方法,但我需要触发器来有效地执行以下操作: CREATE TRIGGER dash_1 ON global_summary AFTER UPDATE UPDATE widget_dash_2 (date, metric

我找了不少,似乎找不到这个问题的答案。我是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))
其中“分数”是“全球汇总”表中的另一列

任何指导都将不胜感激。这几天来我一直在寻找一些指导,这让我更加困惑

我假设我需要对数组做一些事情,并首先从主表中获取所有数据,但是我怎样才能分割这些数据呢

@粘性位

不幸的是,我不得不把这些数据放在这些小表格中,相信我,我更愿意直接从全局汇总中提取数据

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;
所有小部件和仪表盘

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;

感谢您迄今为止的反馈,是的,我可能把更新和插入混淆了。

您的
更新
s都缺少
SET
子句。我相信你把
UPDATE
INSERT混为一谈了,不是吗?正确的编写方法是连接或子查询。但是很难猜测哪一列属于哪一个表,因为它们既不合格,也没有发布模式。因此,很难给出更具体的答案。因此,请发布所有表的DDL(
CREATE TABLE
语句)。此外,在这种情况下会出现一个常见的问题,您真的需要物理更新所有数据,还是可以通过查询检索数据?它看起来很像您的
小部件\u dash*
可以实现为查询
全局\u摘要的视图。如果我正确解释的话,
global\u summary
根据时间的不同包含一些数据的版本?
widget\u dash.*
应该包含它们的最新部分?感谢粘性位,我已经更新了上面的内容。在语句之间添加分号(
)!