MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Erstellen Sie eine Tabelle nur, wenn sie nicht in MariaDB vorhanden ist

In MariaDB können Sie den IF NOT EXISTS verwenden -Klausel von CREATE TABLE -Anweisung, um zu prüfen, ob eine gleichnamige Tabelle bereits in der Datenbank existiert, bevor sie erstellt wird.

Die Tabelle wird nur erstellt, wenn noch keine mit demselben Namen existiert.

Beispiel

Hier ist ein Beispiel zur Veranschaulichung:

CREATE TABLE IF NOT EXISTS t1 (
  c1 INT,
  c2 VARCHAR(10)
);

Hier t1 ist der Tabellenname, und alles zwischen den Klammern ist die Tabellendefinition (d. h. Spalten usw.).

In diesem Fall wird die Tabelle nur erstellt, wenn noch keine mit dem Namen t1 vorhanden ist .

Überprüfen Sie, ob die Tabelle jetzt existiert

Wir können die information_schema.tables abfragen Tabelle, um zu prüfen, ob die Tabelle jetzt existiert:

SELECT EXISTS (
    SELECT 
        TABLE_NAME
    FROM 
    information_schema.tables 
    WHERE 
    TABLE_SCHEMA LIKE 'zap' AND 
        TABLE_TYPE LIKE 'BASE TABLE' AND
        TABLE_NAME = 't1'
    );

Ergebnis:

1

Hier, zap der Name der Datenbank ist und t1 ist der Name der Tabelle, deren Existenz ich überprüfe.

Die 1 bedeutet, dass die Tabelle existiert. Wenn es nicht existierte, würden wir 0 erhalten .

Versuchen Sie erneut, die Tabelle zu erstellen

Wenn wir nun versuchen, diese Tabelle erneut zu erstellen:

CREATE TABLE IF NOT EXISTS t1 (
  c1 INT,
  c2 VARCHAR(10)
);

Wir erhalten keinen Fehler:

Query OK, 0 rows affected, 1 warning (0.002 sec)

Aber wir bekommen eine Warnung.

Sehen wir uns also die Warnung an:

SHOW WARNINGS;

Ergebnis:

+-------+------+---------------------------+
| Level | Code | Message                   |
+-------+------+---------------------------+
| Note  | 1050 | Table 't1' already exists |
+-------+------+---------------------------+

Wie erwartet teilt es uns mit, dass die Tabelle bereits existiert.

Ohne den IF NOT EXISTS Klausel

Folgendes passiert, wenn wir IF NOT EXISTS nicht verwenden -Klausel, wenn versucht wird, eine bereits vorhandene Tabelle zu erstellen:

CREATE TABLE t1 (
  c1 INT,
  c2 VARCHAR(10)
);

Dieses Mal erhalten wir einen Fehler:

ERROR 1050 (42S01): Table 't1' already exists

Beachten Sie, dass der IF NOT EXISTS -Klausel überprüft nicht die Tabellenstruktur/-definition. Es überprüft einfach, ob es keine vorhandene Tabelle mit demselben Namen gibt, den wir der Tabelle zu geben versuchen, die wir erstellen.

Mit anderen Worten, nur weil eine Tabelle mit diesem Namen bereits existiert, bedeutet das nicht, dass sie die richtige Definition hat.