鉴于此表
mysql> describe last_user_activity;
+--------------+------------+------+-----+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+------------+------+-----+-------------------+-------+
| customer_id | int(11) | NO | | NULL | |
| token | text | NO | | NULL | |
| time_stamp | timestamp | YES | | CURRENT_TIMESTAMP | |
| is_logged_in | tinyint(1) | NO | | 0 | |
+--------------+------------+------+-----+-------------------+-------+
4 rows in set (0.00 sec)
我想“触摸”表格的一行,将time_stamp
设置为默认值CURRENT_TIMESTAMP
。
我以为我可以试试
UPDATE last_user_activity WHERE token="40aed4d9-c9ac-471e-8d53-b2baa0d72523";
(这是表中的有效令牌),但结果是
错误1064(42000):您的SQL语法有错误;检查 手册,对应右边的MySQL服务器版本 在'WHERE附近使用的语法 第1行的token =“40aed4d9-c9ac-471e-8d53-b2baa0d72523”
哦,好吧,它看起来很聪明,但NVM。那么,我试过
UPDATE last_user_activity SET token="40aed4d9-c9ac-471e-8d53-b2baa0d72523"
WHERE token="40aed4d9-c9ac-471e-8d53-b2baa0d72523";
表示成功, BUT ,时间戳字段未更新。
我做错了什么?
答案 0 :(得分:1)
UPDATE last_user_activity
SET time_stamp = NULL
WHERE token="40aed4d9-c9ac-471e-8d53-b2baa0d72523";
OR
UPDATE last_user_activity
SET time_stamp = NOW()
WHERE token="40aed4d9-c9ac-471e-8d53-b2baa0d72523";
答案 1 :(得分:1)
看起来您已经给出了列time_stamp的默认值,但是没有给出更新时的默认值。 您可以考虑这一变化:
ALTER TABLE last_user_activity MODIFY COLUMN time_stamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
我希望这可行。之后你可以尝试使用更新命令。