Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

4 maneiras de verificar se existe uma tabela antes de soltá-la no SQL Server (T-SQL)


Soltar uma tabela no SQL é fácil. Você simplesmente usa DROP TABLE myTable onde myTable é o nome da tabela que você deseja eliminar. Você pode usar esse método para descartar uma tabela no SQL Server por meio do script T-SQL.

Mas você receberá um erro se a tabela não existir de fato. Ou seja, a menos que você verifique primeiro a existência da tabela.

Abaixo estão quatro maneiras de usar o T-SQL para verificar se a tabela existe antes de eliminá-la.

Opção 1:O IF EXISTS Cláusula


Ao usar o SQL Server 2016 ou posterior, podemos usar o IF EXISTS cláusula do DROP TABLE declaração para verificar a existência da tabela antes de tentarmos eliminá-la:
DROP TABLE IF EXISTS t1;

Isso descarta uma tabela chamada t1 se existe.

Aqui está o resultado da execução da instrução acima quando a tabela existe (e, portanto, é descartada):
Commands completed successfully.

E aqui está o que obtemos se executarmos a instrução imediatamente novamente (ou seja, quando a tabela não existir):
Commands completed successfully.

Mesma saída. Portanto, a instrução é executada com êxito, independentemente de a tabela existir ou não.

Aqui está o que acontece se tentarmos eliminar a tabela sem usar o 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.

Opção 2:verifique o ID do objeto


Alternativamente, podemos usar o OBJECT_ID() função para verificar a existência da tabela antes de tentarmos eliminá-la:
IF OBJECT_ID(N'dbo.t1', N'U') IS NOT NULL
DROP TABLE dbo.t1;
GO

O exemplo acima verifica o ID do objeto para um dbo.t1 tabela. O segundo argumento para OBJECT_ID() especifica o tipo de objeto que estamos procurando. Neste caso, usamos U , que é para "tabela definida pelo usuário".

O OBJECT_ID() retorna o número de identificação do objeto de banco de dados de um objeto com escopo de esquema. Se o objeto existir, ele não retornará NULL e, portanto, podemos descartar a tabela. Se o objeto não existir, ou se você não tiver acesso a ela, a função retornará NULL e o DROP TABLE instrução não será executada.

Opção 3:consultar information_schema.tables


Outra maneira de verificar se uma tabela já existe é consultar o information_schema.tables visualizar:
IF EXISTS (
    SELECT * FROM information_schema.tables
    WHERE table_schema = 'dbo' AND table_name = 't1') 	
    DROP TABLE dbo.t1;

Isso faz uma coisa semelhante ao exemplo anterior; ele verifica a existência da tabela e a cria somente se ela não existir.

Opção 4:consultar sys.tables


Também podemos consultar o sys.tables visualização do catálogo do 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;

O SQL Server fornece muitas outras maneiras de verificar a existência de tabelas. Consulte 6 maneiras de verificar se existe uma tabela no SQL Server para obter exemplos.