MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Crie uma tabela apenas se ela não existir no MariaDB


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.