Member 13773036 Ответов: 1

Multitable mysql trigger после обновления


У меня есть несколько таблиц с похожей структурой
+-------+--------+-------------+--------+-------------+
| Col1  | Col2   | Col3        | Col4   | Col5        |
+-------+--------+-------------+--------+-------------+
| Item1 | value2 | Valu3       | Value4 | Value5      |
+-------+--------+-------------+--------+-------------+

Col2-Col5 отключены на интерфейсе. Я хочу, чтобы они были заполнены через триггер, как только будет выбран Col1.

Я хочу использовать эту таблицу для получения значений Col2 через Col5 путем сопоставления значения Col1

+-------+--------+-------------+--------+-------------+
| Col1  | Col2   | Col3        | Col4   | Col5        |
+-------+--------+-------------+--------+-------------+
| Item1 | value2 | Valu3       | Value4 | Value5      |
+-------+--------+-------------+--------+-------------+
| Item2 |        | Item2Value3 |        |             |
+-------+--------+-------------+--------+-------------+
| Item3 |        |             |        | Item3Value5 |
+-------+--------+-------------+--------+-------------+


Я подумываю о том, чтобы сделать триггеры для таблиц, но мне придется создать триггер для всех таблиц в базе данных. есть ли простой способ сделать массовое обновление?

Это код запуска, который я планирую использовать. (что в данный момент не работает) Мне нужна помощь, чтобы починить его.

Заранее спасибо.

Что я уже пробовал:

DELIMITER $$

CREATE
    /*!50017 DEFINER = 'root'@'%' */
    TRIGGER `onUpdate` AFTER INSERT ON `table1` 
    FOR EACH ROW BEGIN

        UPDATE
        SET
        `Col2` = `table2`.`Col2`,
        `Col3` = `table2`.`Col3`,
        `Col4` = `table2`.`Col4`,
        `Col5` = `table2`.`Col5`
        WHERE
        table2.`Col1` = Col1;
        UPDATE
        SET
        `Col2` = `table3`.`Col2`,
        `Col3` = `table3`.`Col3`,
        `Col4` = `table3`.`Col4`,
        `Col5` = `table3`.`Col5`
        WHERE
        table3.`Col1` = Col1;
        UPDATE
        SET
        `Col2` = `table4`.`Col2`,
        `Col3` = `table4`.`Col3`,
        `Col4` = `table4`.`Col4`,
        `Col5` = `table4`.`Col5`
        WHERE
        table4.`Col1` = Col1;

        ......

    END;
$$

1 Ответов

Рейтинг:
0

Wendelius

Я не совсем уверен, что вам нужно, но если отдельные триггеры имеют общую логику, почему бы не создать процедуру и не вызвать ее в каждом триггере. Это предотвратит повторение одной и той же логики во всех триггерах.

Взгляните на это MySQL :: MySQL 5.7 справочное руководство :: 13.1.16 создать процедуру и создать синтаксис функции[^]


Member 13773036

Да. Я буду делать это в следующий раз. Но я застрял на этой стадии. MySQL выдает мне ошибку всякий раз, когда я добавляю более одного скрипта обновления таблицы.

Wendelius

В чем заключается ошибка, которую вы получаете?

Member 13773036

Ошибка Mysql

Wendelius

Пожалуйста, опубликуйте полный текст ошибки, который вы получите.

Не видя ошибки, совершенно невозможно сказать, в чем ее причина.