2017-09-17 137 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和我的軟件。

謝謝。

相關問題