No MariaDB, você pode usar o
IF NOT EXISTS cláusula do CREATE TABLE para verificar se uma tabela com o mesmo nome já existe no banco de dados antes de criá-la. A tabela só será criada se já não houver uma com o mesmo nome.
Exemplo
Segue um exemplo para demonstrar:
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
); Aqui,
t1 é o nome da tabela e tudo entre os parênteses é a definição da tabela (ou seja, colunas, etc). Nesse caso, a tabela só será criada se ainda não houver uma chamada
t1 . Verifique se a tabela já existe
Podemos consultar o
information_schema.tables table para verificar se a tabela agora 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
Aqui,
zap é o nome do banco de dados e t1 é o nome da tabela que estou verificando a existência. O
1 significa que a tabela existe. Se não existisse, teríamos 0 . Tente criar a tabela novamente
Agora, se tentarmos criar essa tabela novamente:
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
); Não recebemos um erro:
Query OK, 0 rows affected, 1 warning (0.002 sec)
Mas recebemos um aviso.
Então vamos verificar o aviso:
SHOW WARNINGS; Resultado:
+-------+------+---------------------------+ | Level | Code | Message | +-------+------+---------------------------+ | Note | 1050 | Table 't1' already exists | +-------+------+---------------------------+
Como esperado, ele nos diz que a tabela já existe.
Sem o IF NOT EXISTS Cláusula
Veja o que acontece quando não usamos o
IF NOT EXISTS cláusula ao tentar criar uma tabela que já existe:CREATE TABLE t1 (
c1 INT,
c2 VARCHAR(10)
); Desta vez recebemos um erro:
ERROR 1050 (42S01): Table 't1' already exists
Observe que o
IF NOT EXISTS cláusula não verifica a estrutura/definição da tabela. Ele simplesmente verifica se não há nenhuma tabela existente com o mesmo nome que estamos tentando dar à tabela que estamos criando. Em outras palavras, só porque uma tabela com esse nome já existe, não significa que ela tenha a definição correta.