0

tableExists という関数があります。テーブルの存在を確認するために使用できます。DBアップグレードスクリプトで使用したいです。次のような関数を使用できます。

select myDb.tableExists('myDb', 'someTable') as cnt into @exists;

そして、次のような結果を参照してください。

mysql> select @exists;
+---------+
| @exists |
+---------+
|       1 |
+---------+

次に、If ステートメントで使用し、その後に create table ステートメントを使用します。しかし、私はifに問題があります。以下は、私がテストしようとしているものです。

mysql> IF (@exists = 1) THEN
    -> select 'exists'
    -> END IF;
ERROR 1064 (42000): 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 (@exists = 1) THEN
select 'exists'
END IF' at line 1

ここで何が欠けていますか?これは単純なはずです。

4

2 に答える 2

3

IFストアド プロシージャ内でのみ使用できます。

有効な select ステートメントは次のようになります。

SELECT CASE (@exists) WHEN 1 THEN 'exists' END as DoesItExist

ケースをストアド プロシージャ内のスタンドアロン要素として使用する場合は、end casehow ever で終了する必要があります。

于 2013-02-25T18:40:14.817 に答える
2

クエリで使用IF NOT EXISTSして、このすべての問題を解決してみませんか。CREATE TABLE

CREATE TABLE new_table IF NOT EXISTS
... {table definition}

テーブルが既に存在する場合、何も起こりません。

于 2013-02-25T18:41:21.140 に答える