W MariaDB możesz użyć IF NOT EXISTS klauzula CREATE TABLE oświadczenie, aby sprawdzić, czy tabela o tej samej nazwie już istnieje w bazie danych przed jej utworzeniem.
Tabela zostanie utworzona tylko wtedy, gdy nie ma jeszcze tabeli o tej samej nazwie.
Przykład
Oto przykład do zademonstrowania:
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
);
Tutaj, t1 to nazwa tabeli, a wszystko w nawiasach to definicja tabeli (tj. kolumny itp.).
W takim przypadku tabela zostanie utworzona tylko wtedy, gdy nie istnieje jeszcze jedna o nazwie t1 .
Sprawdź, czy tabela już istnieje
Możemy wysłać zapytanie do information_schema.tables tabela, aby sprawdzić, czy tabela już istnieje:
SELECT EXISTS (
SELECT
TABLE_NAME
FROM
information_schema.tables
WHERE
TABLE_SCHEMA LIKE 'zap' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 't1'
); Wynik:
1
Tutaj, zap to nazwa bazy danych, a t1 to nazwa tabeli, której istnienie sprawdzam.
1 oznacza, że tabela istnieje. Gdyby nie istniał, otrzymalibyśmy 0 .
Spróbuj ponownie utworzyć stół
Teraz, jeśli spróbujemy ponownie utworzyć tę tabelę:
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
); Nie pojawia się błąd:
Query OK, 0 rows affected, 1 warning (0.002 sec)
Ale dostajemy ostrzeżenie.
Sprawdźmy więc ostrzeżenie:
SHOW WARNINGS; Wynik:
+-------+------+---------------------------+ | Level | Code | Message | +-------+------+---------------------------+ | Note | 1050 | Table 't1' already exists | +-------+------+---------------------------+
Zgodnie z oczekiwaniami informuje nas, że tabela już istnieje.
Bez IF NOT EXISTS Klauzula
Oto, co się dzieje, gdy nie używamy IF NOT EXISTS klauzula podczas próby utworzenia tabeli, która już istnieje:
CREATE TABLE t1 (
c1 INT,
c2 VARCHAR(10)
); Tym razem pojawia się błąd:
ERROR 1050 (42S01): Table 't1' already exists
Zauważ, że IF NOT EXISTS klauzula nie sprawdza struktury/definicji tabeli. Po prostu sprawdza, czy nie istnieje tabela o tej samej nazwie, którą próbujemy nadać tabeli, którą tworzymy.
Innymi słowy, tylko dlatego, że tabela o tej nazwie już istnieje, nie oznacza to, że ma poprawną definicję.