回答
您可以使用trigger:
DELIMITER ;;
CREATE TRIGGER foo BEFORE UPDATE ON my_table FOR EACH ROW
IF NEW.colA <=> OLD.colA -- has not been updated
AND NEW.colB <=> OLD.colB -- has not been updated
AND NOT NEW.colC <=> OLD.colC -- has been updated
-- etc.
THEN
SET NEW.colD = NOW(); -- update timestamp
END IF
;;
DELIMITER ;
當心,你的TIMESTAMP
列沒有啓用automatic updating。
嗨Eggyal,非常感謝您的回答!我遇到以下錯誤:「你的SQL語法錯誤;檢查與你的MySQL服務器版本相對應的手冊,在第一行'DELIMITER'附近使用正確的語法:」我嘗試了不同的字符作爲限制器(#,/ /,/,|),我總是得到相同的錯誤:'( – Alejandra
@Ajjandra:你在用什麼客戶端?「DELIMITER」是一個客戶端命令,它被mysql命令行工具識別,聽起來好像你的客戶端試圖將它發送到服務器,在那裏它是沒有意義的。你將不得不檢查你的客戶端的文檔來發現它的語句分隔符是如何調整的 – eggyal
你是對的!我正在編寫一個遷移(rails)和「分隔符」單詞無法識別:)我只是在查詢之間放置了一個字符「^」,並放置了類似sql.split('^')的東西。 執行sq,除非sq.blank? 結束 – Alejandra
當然。您可以將時間戳列定義爲日期時間,然後在滿足條件時使用觸發器更新它。
粗糙的語法是:
CREATE TRIGGER trigger_name AFTER UPDATE ON table FOR EACH ROW
BEGIN
IF(
NOT NEW.watched_column <=> OLD.watched_column AND
NEW.other_a <=> NEW.other_a AND
...
)
THEN
SET NEW.timestamp_column = NOW();
END IF;
END
非常感謝您的快速回答:) – Alejandra
- 1. 更新時間戳列
- 2. 更新時間戳列
- 3. 更新時間戳列
- 4. 如何防止更新MySQL行時更新時間戳列?
- 5. MySQL的 - 時間戳列不更新
- 6. Mysql的多個時間戳列更新
- 7. 時間戳更新
- 8. 更新時間戳
- 9. 更新時間戳
- 10. LINQ時間戳 - 自動更新時間戳列?
- 11. 更新時間戳時Sqliteexception?
- 12. 更新一個時間戳列可爲空
- 13. 即使沒有更改,MYSQL時間戳列自動更新?
- 14. 更新SQL緩慢更新時間戳
- 15. 更新數據更新時的時間戳,但不更新時間戳更新郵件到達計數
- 16. MySQL的 - 更新時間戳
- 17. Nhibernate更新時間戳
- 18. 時間戳更新問題
- 19. 更新.Net中的iSeries日期/時間/時間戳列。
- 20. 如何在列更新時觸發時間戳設置?
- 21. 我可以將時間戳列更新爲期望的值嗎?
- 22. 使用新值更新時間戳列 - oracle中現有列的值
- 23. mysql:如何在字段更新時自動更新時間戳
- 24. 是否可以在Ionic2中實時更新臨時陣列?
- 25. 更新日期時間列
- 26. 是否有可能更新函數內的間隔計時器?
- 27. 時間戳列 - 是否可以查詢?
- 28. 更新一個unix時間戳php(strtotime)
- 29. 帶有時間戳的自動更新oracle表列
- 30. 更新列表中未提及的時間戳列的查詢
這將需要通過代碼來完成。 MySQL數據庫中的時間戳會在更新任何字段時更新 –
簡答題是「否」......至少不是自動的。 –
當然,它可以自動觸發! – jsedano