如何在 phpmyadmin 中创建触发器,插入后将更新花药表中的字段?

Posted

技术标签:

【中文标题】如何在 phpmyadmin 中创建触发器,插入后将更新花药表中的字段?【英文标题】:How can I create a trigger in phpmyadmin, that after insert will update a field in anther table? 【发布时间】:2021-09-27 08:27:39 【问题描述】:

我有一个名为userlikes 的表,其中包含give_like_idreceive_like_id 列。

我还有一个users 表,其中包含count_likesid 列。每次将新记录插入userlikes 表时,我想在countlikes 表中减少-1。

userlikes: give_like_id,receive_like_id

users: id, count_likes

我试过这段代码,但它不起作用。

CREATE TRIGGER `update_count_likes` 
AFTER INSERT 
ON `user_likes` 
FOR EACH ROW
    UPDATE users 
    SET users.likes_count = users.likes_count - 1
    WHERE users.id = user_likes.give_like_id

【问题讨论】:

您使用的是哪个 dbms? (也许是 mysql?) 嘿,我正在使用 mysql 在通过触发器保持这样的计数让自己头疼之前,问问自己是否真的需要它。它是 派生 数据 - 您始终可以通过汇总 userlikes 表来计算它。当您存储派生数据时,您引入了不一致的机会,其中存储的计数和表中的行数不同(出于某些尚未发现的原因) 【参考方案1】:

嘿,答案是:

    CREATE TRIGGER `update_count_likes` AFTER INSERT ON `user_likes`
 FOR EACH ROW UPDATE users 
SET users.likes_count
= users.likes_count -1
WHERE users.id=NEW.give_like_id

【讨论】:

你能解释一下你的答案和他问题末尾的代码有什么不同吗?请编辑您的答案:) 我添加 NEW 并没有太大的区别,我有一个错误,用 coulmes 名称,即使在问题中代码逻辑也是正确的。

以上是关于如何在 phpmyadmin 中创建触发器,插入后将更新花药表中的字段?的主要内容,如果未能解决你的问题,请参考以下文章

在 phpMyAdmin 中创建一个约束作为触发器

在 phpmyadmin 中创建触发器

使用变量触发 phpMyAdmin

如何在插入时在 SQL Server 中创建触发器?

如何在 mongodb atlas 中创建插入触发器?

TRIGGER 语法错误 mysql 说 #1303 - 无法从另一个存储的例程中创建触发器 - phpmyadmin