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.