Alguém pode me dizer se existe alguma diferença entre
DROP IF EXISTS [TABLE_NAME]
DROP [TABLE_NAME]
Estou perguntando isso porque estou usando o modelo JDBC no meu aplicativo da web MVC. Se eu usar DROP [TABLE_NAME]
o erro disse que a tabela existe. E se eu usá- DROP IF EXISTS [TABLE_NAME]
lo diz gramática SQL ruim. Alguém pode ajudar?
sql
drop-table
AbdulAziz
fonte
fonte
Respostas:
A sintaxe padrão do SQL é
IF EXISTS
não é padrão; plataformas diferentes podem suportá-lo com sintaxe diferente ou não suportá-lo. No PostgreSQL, a sintaxe éO primeiro lançará um erro se a tabela não existir ou se outros objetos de banco de dados dependerem dela. Na maioria das vezes, os outros objetos de banco de dados serão referências de chave estrangeira, mas também pode haver outros. (Visualizações, por exemplo.) O segundo não emitirá um erro se a tabela não existir, mas ainda emitirá um erro se outros objetos de banco de dados dependerem dela.
Para soltar uma tabela e todos os outros objetos que dependem dela, use um deles.
Use CASCADE com muito cuidado.
fonte
CASCADE
dentro de um bloco de transação (BEGIN
...COMMIT
). Dessa forma, fica claro como o banco de dados será afetado antes de potencialmente sobrecarregar um monte de dados que você talvez não desejasse.Não é o que é pedido diretamente. Mas, procurando como descartar tabelas adequadamente, deparei-me com essa pergunta, como acho que muitas outras também.
No SQL Server 2016 ou superior, você pode usar
Para SQL Server <2016, o que faço é o seguinte para uma tabela permanente
Ou isso, para uma tabela temporária
fonte
Você esqueceu a
table
sintaxe:que deixa cair uma mesa.
Usando
verifica se a tabela existe antes de descartá-la.
Se existir, será descartado.
Caso contrário, nenhum erro será gerado e nenhuma ação será tomada.
fonte
primeiro verifica se a tabela existe, se exclui a tabela enquanto
ele exclui sem verificar, portanto, se não existe, sai com um erro
fonte
Se não existir uma tabela com esse nome,
DROP
falhará com o erro eDROP IF EXISTS
simplesmente não fará nada.Isso é útil se você criar / modificar seu banco de dados com um script; dessa forma, você não precisa garantir manualmente que as versões anteriores da tabela sejam excluídas. Você apenas faz um
DROP IF EXISTS
e esquece.Obviamente, seu mecanismo de banco de dados atual pode não suportar essa opção; é difícil informar mais sobre o erro com as informações fornecidas.
fonte
drop some_table if exists;
e a tabelasome_table
não existir.DROP
precisa que você especificar o tipo de objeto (TABLE
neste caso)