2017-09-17 20 views
-3

私はこの質問が以前に尋ねられたことを知っていますが、残念ながら私はその解決策を実行できません。インデックスが存在しない場合は作成してください

私は、MySQL上で、次のクエリを実行しようとしています:

IF(SELECT 1 FROM information_schema.statistics WHERE index_name='abcattbl_tnam_ownr' AND table_name='abcattbl') <= 0 CREATE INDEX abcattbl_tnam_ownr ON abcattbl(abt_tnam ASC, abt_ownr ASC); 

のmySQL WBとunixODBCのisqlの両方がエラーになります。 WBは、エラーがIFコマンド/文にあることを示します。

もちろん、私のC/C++でこのステートメントを実行しようとしても失敗します。だから私はWBとisqlを試しました。

私はWB/isqlの実行を本当に必要としません。私はC/C++プログラム内で実行したいと思っています。

私には何が欠けていますか?

TIA!ここで

+0

C++プログラムから直接SQLクエリを実行することはできません。少なくともC++プログラムとMySQL DBの間で通信するドライバが必要です – Steephen

+0

@Steephen、正しい私はunixODBCと最新のmyODBCドライバを使用しています。いくつかのコードを見たいですか?それはかなり簡単です - ハンドルを割り当て、SQLExecute()を呼び出します。 – Igor

答えて

0

は、私が使用するソリューションです。

SELECT(IF((SELECT 1 FROM information_schema.statistics WHERE index_name=\'abcattbl_tnam_ownr\' AND table_name=\'abcattbl\') > 0, \"SELECT 0\", \"CREATE INDEX abcattbl_tnam_ownr ON abcattbl(abt_tnam ASC, abt_ownr ASC)\")); 

このクエリは、WBの内側と私のソフトウェアから正常に動作します。

ありがとうございます。

関連する問題