sql >> Base de Datos >  >> RDS >> Sqlserver

4 formas de comprobar si existe una tabla antes de colocarla en SQL Server (T-SQL)

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.