【发布时间】:2011-05-12 00:22:56
【问题描述】:
我正在创建一个 MySQL 更新脚本,它允许我使用时间戳将我的所有 sql 更改合并到多个数据库,以确定哪些更改已经更新。
我已将@cv 设置为数据库的当前版本。问题出现在if statement。我将 IF 语句更改为它会导致 if 跌倒。
SET @cv = (SELECT `value` FROM `configs` WHERE `name` = 'cvDate');
IF @cv <= STR_TO_DATE("2010/11/10 12:15:00") THEN
ALTER TABLE `feeds` ADD `tone` VARCHAR( 255 ) NOT NULL AFTER `type` ,
ADD `authority` DECIMAL( 2, 1 ) NOT NULL DEFAULT '0.0' AFTER `tone`;
END IF;
UPDATE `configs` SET `value` = NOW() WHERE `name` = "cvDate";
我得到的错误是:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF @cv <= STR_TO_DATE("2010/11/10 12:15:00") THEN ALTER TABLE `feeds` ADD `to' at line 1
任何帮助将不胜感激。
【问题讨论】:
-
@cv 只是一个结果值还是一个“结果集”,我的意思是即使你只选择一行和一个元素,也许@cv 成为一个完整的结果而不是一个可比较的值?还没有这样做,所以我只是在头脑风暴
-
是否有可能因为 'type' 列不存在而无法验证 Alter Table 的第二个子句?或者,如果您删除 Alter Table 子句但保留 IF 会发生什么?
标签: php mysql if-statement conditional