我有一個表timestamp
的列,其中默認current_timestamp
和更新到current_timestamp
在每個更新。如何更改mysql表列的默認值?
我想刪除此列上的「on update」功能。我如何編寫alter語句?
我試過如下:
ALTER TABLE mytable alter column time set DEFAULT now();
但這並沒有工作。
我有一個表timestamp
的列,其中默認current_timestamp
和更新到current_timestamp
在每個更新。如何更改mysql表列的默認值?
我想刪除此列上的「on update」功能。我如何編寫alter語句?
我試過如下:
ALTER TABLE mytable alter column time set DEFAULT now();
但這並沒有工作。
皮特幾乎是正確的,但使用了錯誤的語法 '變化':
公告您必須重複列名稱。此外,請確保您使用反引號而不是單引號來轉義列名稱時間,這可以防止它被解釋爲mysql列類型的時間。
通過指定CURRENT_TIMESTAMP的DEFAULT,MySQL將不再自動更新列。從MySQL Manual:
隨着DEFAULT CURRENT_TIMESTAMP子句不用ON UPDATE子句,列有其默認值使用當前的時間戳但是不自動更新。
您不能AFAIK使用NOW()等函數作爲默認值。
嘗試
ALTER TABLE `mytable` CHANGE `time` `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
(編輯補充逃逸,第二次使用字段名)
得到以下內容: mysql> ALTER TABLE消息更改時間TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP; 錯誤1064(42000):您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行'NOT NULL DEFAULT CURRENT_TIMESTAMP'附近使用正確的語法。mysql> ALTER TABLE消息CHANGE列時間TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP; 錯誤1064(42000):您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行的'NOT NULL DEFAULT CURRENT_TIMESTAMP'附近使用正確的語法。 – Tihom 2009-11-20 14:13:33
很抱歉忘了添加轉義,並且字段名稱出現兩次。 – Pete 2009-11-20 16:25:57
你確定它沒有使用觸發器來更新它嗎? – 2009-11-20 12:41:17
此問題應該遷移到StackExcange:數據庫管理員 – 2016-06-25 07:46:37