MariaDBでは、IF NOT EXISTS
を使用できます CREATE TABLE
の句 作成する前に、同じ名前のテーブルがデータベースにすでに存在するかどうかを確認するステートメント。
テーブルは、同じ名前のテーブルがまだない場合にのみ作成されます。
例
デモンストレーションの例を次に示します。
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
);
ここでは、t1
はテーブル名であり、括弧内はすべてテーブル定義(つまり、列など)です。
その場合、テーブルはt1
という名前のテーブルがまだない場合にのみ作成されます。 。
テーブルが存在することを確認します
information_schema.tables
にクエリを実行できます テーブルが現在存在するかどうかを確認するためのテーブル:
SELECT EXISTS (
SELECT
TABLE_NAME
FROM
information_schema.tables
WHERE
TABLE_SCHEMA LIKE 'zap' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 't1'
);
結果:
1
ここでは、zap
はデータベースの名前であり、t1
存在を確認しているテーブルの名前です。
1
テーブルが存在することを意味します。存在しなかった場合は、0
を取得します 。
テーブルをもう一度作成してみてください
ここで、そのテーブルを再度作成しようとすると:
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
);
エラーは発生しません:
Query OK, 0 rows affected, 1 warning (0.002 sec)
しかし、警告が表示されます。
それでは、警告を確認しましょう:
SHOW WARNINGS;
結果:
+-------+------+---------------------------+ | Level | Code | Message | +-------+------+---------------------------+ | Note | 1050 | Table 't1' already exists | +-------+------+---------------------------+
予想どおり、テーブルはすでに存在していることがわかります。
IF NOT EXISTS
なし 条項
IF NOT EXISTS
を使用しない場合は次のようになります すでに存在するテーブルを作成しようとするときの句:
CREATE TABLE t1 (
c1 INT,
c2 VARCHAR(10)
);
今回はエラーが発生します:
ERROR 1050 (42S01): Table 't1' already exists
IF NOT EXISTS
に注意してください 句はテーブルの構造/定義をチェックしません。作成しているテーブルに付けようとしているのと同じ名前の既存のテーブルがないことを確認するだけです。
つまり、その名前のテーブルがすでに存在しているからといって、それが正しい定義を持っているとは限りません。