在条件语句中使用默认值时出错

时间:2013-08-22 13:38:32

标签: mysql syntax-error default

以下SQL更新语句在使用“default”关键字时起作用:

UPDATE User SET expDate = DEFAULT WHERE ID=19

但是,当我添加条件时会发出SYNTAX错误(代码1064):

UPDATE User SET expDate = IF(expDate > NOW(), DEFAULT, expDate) WHERE ID=19

DEFAULTDATETIME的{​​{1}}值为expDate

在这种情况下,正确的语法应该是什么?

错误:

  

错误代码:1064。您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在'expDate'附近使用的语法在第1行WHERE ID = 19'

1 个答案:

答案 0 :(得分:1)

DEFAULT是一个关键字。不是变量。它不能用作表达式的一部分。

http://dev.mysql.com/doc/refman/5.0/en/update.html

  

每个值都可以作为表达式或关键字DEFAULT to给出   将列明确设置为其默认值。

在您的特定情况下,您可以在交易中执行两个更新:

START TRANSACTION
SET @n = NOW()
UPDATE User SET expDate = DEFAULT WHERE ID=19 AND expDate > @n
UPDATE User SET expDate = expDate WHERE ID=19 AND expDate <= @n
COMMIT