mySQL - 如果语句给出语法错误

时间:2011-10-02 21:22:25

标签: mysql

所以我有以下问题:

IF ( ( SELECT RevisionNumber FROM SchemaVersion ) > 1 ) THEN BEGIN
    CREATE TABLE Test ( ID INT );
    CREATE TABLE Test2 ( ID INT );
END;
END IF

基本上我想基于我的表中的值(SchemaVersion - 总是有1行)来决定是否需要进行某些更改。

但是,当我使用此查询时,我收到以下错误消息:

#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 ( ( SELECT RevisionNumber FROM SchemaVersion ) > 1 ) THEN BEGIN
 CREATE T' at line 1

知道为什么这是错误/如何解决?

我刚刚阅读了另一篇帖子,显然BEGIN / END只能在存储过程中使用。有没有办法绕过这个(没有把它放在存储过程中)。

由于

3 个答案:

答案 0 :(得分:9)

IF语句是所谓的复合语句语法的一部分,它只在存储的代码中可用,如触发器,函数或存储过程。

http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-compound-statements.html

答案 1 :(得分:4)

使用带括号的IF会调用IF function,这与IF statement

不同
  

注意还有一个IF()函数,它与IF不同   声明在这里描述。请参见第11.4节“控制流功能”。

答案 2 :(得分:1)

我认为您需要在存储过程中运行它。见http://dev.mysql.com/doc/refman/5.0/en/stored-routines.html