Dejar caer una tabla en SQL fácil. Simplemente usa DROP TABLE myTable
donde myTable
es el nombre de la tabla que desea descartar. Puede usar este método para colocar una tabla en SQL Server a través de un script T-SQL.
Pero obtendrá un error si la tabla en realidad no existe. Es decir, a menos que compruebe primero la existencia de la tabla.
A continuación se muestran cuatro formas de usar T-SQL para comprobar si la tabla existe antes de soltarla.
Opción 1:El IF EXISTS
Cláusula
Cuando usamos SQL Server 2016 o posterior, podemos usar IF EXISTS
cláusula de la DROP TABLE
instrucción para verificar la existencia de la tabla antes de intentar eliminarla:
DROP TABLE IF EXISTS t1;
Esto suelta una tabla llamada t1
si existe.
Este es el resultado de ejecutar la instrucción anterior cuando la tabla existe (y, por lo tanto, se descarta):
Commands completed successfully.
Y esto es lo que obtenemos si volvemos a ejecutar inmediatamente la instrucción (es decir, cuando la tabla no existe):
Commands completed successfully.
Misma salida. Entonces, la declaración se ejecuta con éxito, ya sea que la tabla exista o no.
Esto es lo que sucede si intentamos eliminar la tabla sin usar IF EXISTS
cláusula:
DROP TABLE t1;
Resultado:
Msg 3701, Level 11, State 5, Line 1 Cannot drop the table 't1', because it does not exist or you do not have permission.
Opción 2:Comprobar el ID del objeto
Alternativamente, podemos usar el OBJECT_ID()
función para comprobar la existencia de la tabla antes de intentar eliminarla:
IF OBJECT_ID(N'dbo.t1', N'U') IS NOT NULL
DROP TABLE dbo.t1;
GO
El ejemplo anterior verifica el ID del objeto para un dbo.t1
mesa. El segundo argumento de OBJECT_ID()
especifica el tipo de objeto que estamos buscando. En este caso usamos U
, que es para "tabla definida por el usuario".
El OBJECT_ID()
devuelve el número de identificación del objeto de la base de datos de un objeto del ámbito del esquema. Si el objeto existe, no devolverá NULL y, por lo tanto, podemos descartar la tabla. Si el objeto no existe, o si no tiene acceso a ella, la función devuelve NULL y DROP TABLE
declaración no se ejecutará.
Opción 3:consulta information_schema.tables
Otra forma de verificar si una tabla ya existe es consultar el information_schema.tables
ver:
IF EXISTS (
SELECT * FROM information_schema.tables
WHERE table_schema = 'dbo' AND table_name = 't1')
DROP TABLE dbo.t1;
Eso hace algo similar al ejemplo anterior; comprueba la existencia de la tabla y la crea solo si no existe.
Opción 4:consulta sys.tables
También podemos consultar el sys.tables
vista del catálogo del sistema:
IF EXISTS (
SELECT * FROM sys.tables t
JOIN sys.schemas s ON (t.schema_id = s.schema_id)
WHERE s.name = 'dbo' AND t.name = 't1')
DROP TABLE dbo.t1;
SQL Server proporciona muchas otras formas de comprobar la existencia de tablas. Consulte 6 formas de comprobar si existe una tabla en SQL Server para ver ejemplos.