In MariaDB, puoi usare IF NOT EXISTS
clausola del CREATE TABLE
istruzione per verificare se esiste già una tabella con lo stesso nome nel database prima di crearla.
La tabella verrà creata solo se non ce n'è già una con lo stesso nome.
Esempio
Ecco un esempio da dimostrare:
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
);
Qui, t1
è il nome della tabella e tutto ciò che è tra parentesi è la definizione della tabella (es. colonne, ecc.).
In tal caso, la tabella verrà creata solo se non ce n'è già una chiamata t1
.
Verifica che la tabella ora esista
Possiamo interrogare information_schema.tables
tabella per verificare se la tabella ora esiste:
SELECT EXISTS (
SELECT
TABLE_NAME
FROM
information_schema.tables
WHERE
TABLE_SCHEMA LIKE 'zap' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 't1'
);
Risultato:
1
Qui, zap
è il nome del database e t1
è il nome della tabella di cui sto verificando l'esistenza.
Il 1
significa che la tabella esiste. Se non esistesse, otterremmo 0
.
Prova a creare di nuovo la tabella
Ora, se proviamo a creare nuovamente quella tabella:
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
);
Non riceviamo un errore:
Query OK, 0 rows affected, 1 warning (0.002 sec)
Ma riceviamo un avviso.
Quindi controlliamo l'avviso:
SHOW WARNINGS;
Risultato:
+-------+------+---------------------------+ | Level | Code | Message | +-------+------+---------------------------+ | Note | 1050 | Table 't1' already exists | +-------+------+---------------------------+
Come previsto, ci dice che la tabella esiste già.
Senza il IF NOT EXISTS
Clausola
Ecco cosa succede quando non utilizziamo il IF NOT EXISTS
clausola quando si tenta di creare una tabella già esistente:
CREATE TABLE t1 (
c1 INT,
c2 VARCHAR(10)
);
Questa volta riceviamo un errore:
ERROR 1050 (42S01): Table 't1' already exists
Nota che il IF NOT EXISTS
La clausola non controlla la struttura/definizione della tabella. Verifica semplicemente che non ci siano tabelle esistenti con lo stesso nome che stiamo cercando di assegnare alla tabella che stiamo creando.
In altre parole, solo perché esiste già una tabella con quel nome, non significa che abbia la definizione corretta.