說我有如下表設置在MySQL表中每個用戶ID的條目的最大數量
//table user_update
update_id | userid | update_message | timestamp
有沒有一種方法來設置用戶ID每個條目的最大值是多少?我想在用戶輸入5次更新後再輸入更新,之後輸入的更新將刪除最早的更新。我知道如何通過PHP來做到這一點,只是好奇,如果有任何方式只通過MySQL來做到這一點。
說我有如下表設置在MySQL表中每個用戶ID的條目的最大數量
//table user_update
update_id | userid | update_message | timestamp
有沒有一種方法來設置用戶ID每個條目的最大值是多少?我想在用戶輸入5次更新後再輸入更新,之後輸入的更新將刪除最早的更新。我知道如何通過PHP來做到這一點,只是好奇,如果有任何方式只通過MySQL來做到這一點。
我能想到做數據庫端的唯一方法就是在表上使用TRIGGER
。也許是這樣的:
CREATE TRIGGER check_for_too_many_rows
AFTER INSERT ON User_Update
FOR EACH ROW BEGIN
DO SOME LOGIC TO CHECK THE COUNT AND DELETE IF MORE THAN 5...
END;
下面是一些額外的信息:
http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html
好運。
嗯,似乎它只是用PHP來做它更快。感謝您的信息,無論如何仍然會檢查它。 – user1852176
我很可能會同意,這取決於您的需求。數據是否可以手動或在其他進程(非PHP)中添加到表中?如果是這樣,觸發器是確保數據準確性的最佳方法(每個用戶不超過5行)。如果沒有,那麼是的,PHP的工作原理是一樣的。祝你好運。 – sgeddes
這實際上是可能的。但是如果你真的想做出這樣的努力,這是值得懷疑的。
閱讀一些關於「觸發器」的內容。您可以使用觸發器在滿足特定條件時開始操作。通過這種方式,您可以在該表上的每個insert
操作上觸發delete
操作。然後剩下的只是一個條件,最多可保留五個條目。
創建一個包含10行的表並更新最早的表。 – Strawberry