Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

mySQL - If statement giving syntax error

Tags:

mysql

So I have the following query:

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

Basically I want to decide based on a value in my table (SchemaVersion - always has 1 row) whether or not I need to make certain changes.

However, when I use this query I get the following error message:

#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

Any idea why this is erroring / how to fix?

I was just reading another post and apparently BEGIN / END are only allowed within stored procs. Is there any way to get around this (without putting it in a stored proc).

Thanks

like image 257
judda Avatar asked Oct 02 '11 21:10

judda


1 Answers

The IF statement is part of what's called Compound-statement Syntax, and it is only available inside stored code, like a trigger, function, or stored procedure.

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

like image 165
grossvogel Avatar answered Sep 27 '22 22:09

grossvogel