如何在 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_id
、receive_like_id
列。
我还有一个users
表,其中包含count_likes
和id
列。每次将新记录插入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 中创建触发器,插入后将更新花药表中的字段?的主要内容,如果未能解决你的问题,请参考以下文章