2016-12-21 9 views
0

が存在する:私はそのようロジックを追加しようとしていますのMySQL 5.5 IFは、私はいくつかの古い会社のMySQL 5.5のコードでは、いくつかの論理チェックをラップしようとしていますTHEN構文問題

CREATE TABLE IF NOT EXISTS <table_a> (
blah blah blah 
); 

、例えば

別の表が存在する場合、クエリにのみ実行されます。ここでは

If <table_b> EXISTS 

THEN 

CREATE TABLE IF NOT EXISTS <table_a> (
blah blah blah 
); 

END IF; 

は、MySQL 5.5の構文(https://dev.mysql.com/doc/refman/5.5/en/if.html

次の私のクエリです
IF EXISTS(SELECT table_name 
      FROM INFORMATION_SCHEMA.TABLES 
      WHERE table_schema = 'table_b_database' 
      AND table_name = 'table_b') 


THEN 

     CREATE TABLE IF NOT EXISTS <table_a> (
    blah blah blah 
    ); 

END IF; 

悲しいことに、エラーメッセージがあります:

SQL Error (1064): You have an error in your SQL syntax; 

任意の達人は、啓発てもらえますか?ありがとう。

+3

MySQLを助けることを願ってい

IF EXISTS(SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'table_b_database' AND table_name = 'table_b') THEN CREATE TABLE IF NOT EXISTS <table_a> ( blah blah blah ); END IF 

ような何かを行うことができるはずは '場合はサポートしています'ステートメントは、ストアドプロシージャ、関数、トリガなどのプログラミングブロックで使用できます。 –

+0

ストアドプロシージャを使用する代わりに、実行された各ステートメントの結果を調べて、何かが実行されたかどうかを確認します。 – tadman

+0

別々に実行すると各ステートメントはうまくいくが、一緒に配置するとエラーメッセージが返されます。 – Chubaka

答えて

0

IF Syntax

IF search_condition THEN statement_list 
    [ELSEIF search_condition THEN statement_list] ... 
    [ELSE statement_list] 
END IF 

の文書によると、あなたは、私はこれが

+0

ストアドプロシージャ内のみ。そうでなければ。その構文は文脈に非常に敏感です。 – tadman

関連する問題