如何在另一個表中發生某些事情時更新表中的值?如果在另一個表中發生更新值
例如,
我有一個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