2011-06-05 36 views
1

如何在另一個表中發生某些事情時更新表中的值?如果在另一個表中發生更新值

例如,

我有一個like表設置,當有人喜歡一個帖子,我想「numberOfLikes」中的「文章」表增加。

我怎麼能做到這一點?

+0

MySQL 5或更高版本? – 2011-06-05 00:24:51

+0

不知道,我怎麼知道? – Harigntka 2011-06-05 00:27:15

+0

'select @@ version;' – 2011-06-05 00:27:31

回答

1

而且只是在做一個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)也喜歡。

+0

我編輯它以符合目的,並且我得到了錯誤:拒絕訪問;您需要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

+0

這將需要'WHERE id = NEW.postID',因爲'NEW'代表您剛剛插入的'Likes'中的新行,因此您需要引用該字段。但是,「訪問被拒絕」消息意味着MySQL用戶沒有權限創建觸發器。 – 2011-06-05 00:41:24

+0

我怎麼能讓我(用戶)有這個特權? – Harigntka 2011-06-05 00:42:54

0

我不知道你要在喜歡的表中添加什麼,但這是你應該在帖子表中做的。

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!"; 
     } 
    } 
?> 
+0

哦,好像我誤解了這個問題...對不起:) – tbleckert 2011-06-05 00:41:03

相關問題