¿Alguien puede decirme si hay alguna diferencia entre
DROP IF EXISTS [TABLE_NAME]
DROP [TABLE_NAME]
Pregunto esto porque estoy usando la plantilla JDBC en mi aplicación web MVC. Si uso DROP [TABLE_NAME]
el error dice que existe la tabla. Y si lo uso DROP IF EXISTS [TABLE_NAME]
dice mala gramática SQL. ¿Alguien puede ayudar?
sql
drop-table
AbdulAziz
fuente
fuente
Respuestas:
La sintaxis SQL estándar es
IF EXISTS
no es estándar; diferentes plataformas pueden admitirlo con una sintaxis diferente, o no admitirlo en absoluto. En PostgreSQL, la sintaxis esEl primero arrojará un error si la tabla no existe, o si otros objetos de la base de datos dependen de ella. Muy a menudo, los otros objetos de la base de datos serán referencias de claves foráneas, pero también puede haber otros. (Vistas, por ejemplo). El segundo no arrojará un error si la tabla no existe, pero aún arrojará un error si otros objetos de la base de datos dependen de ella.
Para soltar una tabla y todos los demás objetos que dependen de ella, use uno de estos.
Use CASCADE con mucho cuidado.
fuente
CASCADE
dentro de un bloque de transacciones (BEGIN
...COMMIT
). De esta manera, queda claro cómo se verá afectada la base de datos antes de potencialmente bloquear una gran cantidad de datos que quizás no haya deseado.No es lo que se pregunta directamente. Pero buscando cómo hacer correctamente las tablas desplegables, me topé con esta pregunta, como creo que muchos otros también.
Desde SQL Server 2016+ puedes usar
Para SQL Server <2016, lo que hago es lo siguiente para una tabla permanente
O esto, para una mesa temporal
fuente
Olvidó el
table
en su sintaxis:que deja caer una mesa
Utilizando
comprueba si la tabla existe antes de soltarla.
Si existe, se cae.
De lo contrario, no se generará ningún error y no se tomará ninguna medida.
fuente
primero verifica si la tabla existe, si es así, elimina la tabla mientras
se elimina sin verificar, por lo que si no existe, sale con un error
fuente
Si no existe una tabla con ese nombre,
DROP
falla con el error mientrasDROP IF EXISTS
simplemente no hace nada.Esto es útil si crea / modifica su base de datos con un script; de esta manera no tiene que asegurarse manualmente de que se eliminen las versiones anteriores de la tabla. Simplemente haz un
DROP IF EXISTS
y olvídate de eso.Por supuesto, su motor de base de datos actual puede no admitir esta opción, es difícil decir más sobre el error con la información que proporciona.
fuente
drop some_table if exists;
y la tablasome_table
no existe.DROP
necesita que especifiques el tipo de objeto (TABLE
en este caso)