如何在另一个表中发生某些事情时更新表中的值?如果在另一个表中发生更新值
例如,
我有一个like
表设置,当有人喜欢一个帖子,我想“numberOfLikes”中的“文章”表增加。
我怎么能做到这一点?
如何在另一个表中发生某些事情时更新表中的值?如果在另一个表中发生更新值
例如,
我有一个like
表设置,当有人喜欢一个帖子,我想“numberOfLikes”中的“文章”表增加。
我怎么能做到这一点?
而且只是在做一个update
同时作为insert
荷兰国际集团等等,你可以在like
表上创建触发器来更新posts
表。
delimiter |
create trigger likepost after insert on like
for each row begin
update posts set likes = likes + 1 where post_id = new.post_id;
end;
|
delimiter ;
(以上是迅速从the documentation适应,所以你必须改变它为您的实际架构设计。)
您还需要创建一个处理去除触发(S)也喜欢。
我编辑它以符合目的,并且我得到了错误:拒绝访问;您需要SUPER权限才能执行此操作。我知道它不会导致错误,但我的代码是:'delimiter | CREATE trigger likepost AFTER INSERT ON赞 FOR每个 ROW BEGIN 更新文章SET numberOfLikes = numberOfLikes +1 WHERE id = postID; END; | delimiter;' – Harigntka 2011-06-05 00:39:14
这将需要'WHERE id = NEW.postID',因为'NEW'代表您刚刚插入的'Likes'中的新行,因此您需要引用该字段。但是,“访问被拒绝”消息意味着MySQL用户没有权限创建触发器。 – 2011-06-05 00:41:24
我怎么能让我(用户)有这个特权? – Harigntka 2011-06-05 00:42:54
我不知道你要在喜欢的表中添加什么,但这是你应该在帖子表中做的。
UPDATE Posts set numberOfLikes = numberOfLikes + 1 WHERE post_id = 'x'
这就是查询,当有人喜欢某个帖子时运行该查询。
例如:
<a href="?like=5">Like this post</a>
然后
<?php
if (isset($_GET['like']) && is_numeric($_GET['like'])) {
$update = mysql_query("UPDATE Posts set numberOfLikes = numberOfLikes + 1 WHERE post_id = '".$_GET['like']."'");
if ($update) {
echo "Thank you sir!";
} else {
echo "Oups, try again!";
}
}
?>
哦,好像我误解了这个问题...对不起:) – tbleckert 2011-06-05 00:41:03
MySQL 5或更高版本? – 2011-06-05 00:24:51
不知道,我怎么知道? – Harigntka 2011-06-05 00:27:15
'select @@ version;' – 2011-06-05 00:27:31