【问题标题】:Create Trigger : update table column by inserting data into another table rows创建触发器:通过将数据插入另一个表行来更新表列
【发布时间】:2021-08-05 04:03:22
【问题描述】:

请帮我创建触发器, 我有 2 张桌子

data
+---------+------------+-------+-------+
| id | info_id | rate  | qty   | total |
+----+---------+------------+----------+
| 80 |    10   | 150   |   5   |  750  |
+----+---------+-------+-------+-------+
| 81 |    10   | 50    |   5   |  250  |
+--------------+-------+-------+-------+

info
+---------+---------------+------------+
| id  |  name  |  gtotal  |  dated     |
+-----+--------+----------+------------+
| 10  |  Hari  |     NULL | 2021-05-15 |
+---------+------------+---------------+

我想通过 phpmyadmin 创建一个触发器,一旦插入数据,那么 info.gtotal 将通过从表名数据匹配的 info_id 添加 data.total 来更新。

如果数据也发生更新,触发因素是什么。我只想创建两个触发器。

我是新手,请帮助我。接受任何帮助。

【问题讨论】:

    标签: mysql database triggers phpmyadmin


    【解决方案1】:

    您需要创建两个触发器,一个用于插入,另一个用于更新。

    CREATE TRIGGER `insert_trigger`
    AFTER INSERT ON `data`
    FOR EACH ROW
    
    UPDATE info
    SET gtotal = gtotal + new.total
    WHERE id = new.info_id;
    

    这里new.info_id 会有新插入记录的info_id 值

    CREATE TRIGGER `update_trigger`
    AFTER UPDATE ON `data`
    FOR EACH ROW
    
    UPDATE info
    SET gtotal = (gtotal - old.total) + new.total
    WHERE id = new.info_id;
    

    这里 old.total 将具有更新前记录的总值。 new.total 是更新后的总值。

    由于您还没有传达更新后要做什么,我添加了从旧总数中减去总数并添加新总值的逻辑。根据您的要求更改它。

    您也可以在 phpmyadmin 中使用 GUI 创建这些触发器。您必须在菜单栏中选择触发器并添加触发器定义。

    【讨论】:

    • 非常感谢您的详细回复。我爱它。首先它不起作用,但我只是添加了new.total,它起作用了。最终代码变成了UPDATE info SET gtotal = gtotal + new.total WHERE id = new.info_id;,它起作用了。
    猜你喜欢
    • 2020-08-23
    • 2013-12-05
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    相关资源
    最近更新 更多