Как я могу использовать триггер для обновления нескольких таблиц, получая определенные данные из строк в обновляемой таблице? - PullRequest
0 голосов
/ 31 августа 2018

Я немного искал и не могу найти ответ на этот вопрос. Я довольно новичок в 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", мне нужно добавить еще 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...