En MariaDB, puede usar IF NOT EXISTS
cláusula de CREATE TABLE
declaración para verificar si una tabla con el mismo nombre ya existe en la base de datos antes de crearla.
La tabla solo se creará si no existe una con el mismo nombre.
Ejemplo
Aquí hay un ejemplo para demostrarlo:
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
);
Aquí, t1
es el nombre de la tabla, y todo lo que está entre paréntesis es la definición de la tabla (es decir, columnas, etc.).
En ese caso, la tabla solo se creará si no existe una llamada t1
.
Compruebe que la tabla ahora existe
Podemos consultar el information_schema.tables
tabla para verificar si la tabla ahora existe:
SELECT EXISTS (
SELECT
TABLE_NAME
FROM
information_schema.tables
WHERE
TABLE_SCHEMA LIKE 'zap' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 't1'
);
Resultado:
1
Aquí, zap
es el nombre de la base de datos, y t1
es el nombre de la tabla cuya existencia estoy comprobando.
El 1
significa que la tabla existe. Si no existiera, obtendríamos 0
.
Intente crear la tabla de nuevo
Ahora, si intentamos crear esa tabla nuevamente:
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
);
No recibimos un error:
Query OK, 0 rows affected, 1 warning (0.002 sec)
Pero recibimos una advertencia.
Así que revisemos la advertencia:
SHOW WARNINGS;
Resultado:
+-------+------+---------------------------+ | Level | Code | Message | +-------+------+---------------------------+ | Note | 1050 | Table 't1' already exists | +-------+------+---------------------------+
Como era de esperar, nos dice que la tabla ya existe.
Sin el IF NOT EXISTS
Cláusula
Esto es lo que sucede cuando no usamos IF NOT EXISTS
cláusula al intentar crear una tabla que ya existe:
CREATE TABLE t1 (
c1 INT,
c2 VARCHAR(10)
);
Esta vez obtenemos un error:
ERROR 1050 (42S01): Table 't1' already exists
Tenga en cuenta que IF NOT EXISTS
cláusula no comprueba la estructura/definición de la tabla. Simplemente comprueba que no existe ninguna tabla con el mismo nombre que estamos tratando de dar a la tabla que estamos creando.
En otras palabras, el hecho de que ya exista una tabla con ese nombre no significa que tenga la definición correcta.