MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Utwórz tabelę tylko wtedy, gdy nie istnieje w MariaDB

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ę.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak podłączyć programy C++ do MariaDB

  2. Jak skonfigurować replikację asynchroniczną między klastrami MariaDB Galera

  3. Szyfrowanie baz danych:dlaczego i gdzie potrzebne jest szyfrowanie danych

  4. Jak działa ATAN() w MariaDB

  5. Ogłaszamy obsługę MariaDB 10.2 — ClusterControl 1.5