我已經看到了很多相關的問題,但我不能把我的手指上這個具體問題:MySQL是不允許ON UPDATE CURRENT_TIMESTAMP的DATETIME場
我有一個MySQL表既具有TIMESTAMP(何時該字段已創建)和DATETIME(每次更新字段時)。它看起來像這樣:
CREATE TABLE 'vis' (
ID BIGINT PRIMARY KEY AUTO_INCREMENT NOT NULL,
ENTRY VARCHAR(255),
AUTHOR VARCHAR(255),
CREATED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UPDATED_AT DATETIME ON UPDATE CURRENT_TIMESTAMP,
UPDATED_BY VARCHAR(255)
)
當我嘗試這雖然,我得到的錯誤是:(SQL Error: 1294 SQL State: HY000) - Invalid ON UPDATE clause for 'updated_at' field
無論我已閱讀(甚至在Stack Overflow)建議我應該能夠做到這一點,但我收到這個錯誤。也許還有另一種方法可以讓我每次更新它時都會自動更新時間?
我正在使用MySQL Server 5.5。
這完全奏效,謝謝!我在表聲明中刪除了'ON UPDATE CURRENT TIMESTAMP',然後在創建表之後我處理了這個語法:'CREATE TRIGGER'vis_update_entry'之前更新'vis'FOR EACH ROW SET NEW.updated_at = CURRENT_TIMESTAMP' 現在每次更新該特定行時都會更新。 故事的道德:**網上任何地方,說你可以做兩個TIMESTAMPS或一個DATETIME ON UPDATE是假的!**至少在MySQL服務器5.5。 –
@MichaelPlautz - 總是很高興看到一個「謝謝,我解決了它與您的資源」而不是「好吧,但我需要代碼做這個觸發器」,謝謝:) – slugonamission
使用的版本似乎是非常重要的。文檔說,如果使用MySQL版本5.6,它應該可以工作:http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html。我無法證實,因爲我的服務器5.1 :( –