El nombre de la tabla es Scores
.
¿Es correcto hacer lo siguiente?
IF EXISTS(SELECT *
FROM dbo.Scores)
DROP TABLE dbo.Scores
El nombre de la tabla es Scores
.
¿Es correcto hacer lo siguiente?
IF EXISTS(SELECT *
FROM dbo.Scores)
DROP TABLE dbo.Scores
¿Es correcto hacer lo siguiente?
IF EXISTS(SELECT * FROM dbo.Scores) DROP TABLE dbo.Scores
No. Eso soltará la tabla solo si contiene alguna fila (y generará un error si la tabla no existe).
En cambio, para una mesa permanente, puede usar
IF OBJECT_ID('dbo.Scores', 'U') IS NOT NULL
DROP TABLE dbo.Scores;
O bien, para una tabla temporal, puede usar
IF OBJECT_ID('tempdb.dbo.#T', 'U') IS NOT NULL
DROP TABLE #T;
Para cualquiera en SQL Server 2016+ señalaré esta respuesta - que tiene una mejor manera.
Desde SQL Server 2016 puedes usar
DROP TABLE IF EXISTS dbo.Scores
Referencia: CAÍDA SI EXISTE - algo nuevo en SQL Server 2016
Pronto estará en la base de datos SQL Azure.
La forma ANSI SQL / multiplataforma es usar el INFORMATION_SCHEMA, que fue diseñado específicamente para consultar metadatos sobre objetos dentro de bases de datos SQL.
if exists (select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'Scores' AND TABLE_SCHEMA = 'dbo')
drop table dbo.Scores;
La mayoría de los servidores RDBMS modernos proporcionan, como mínimo, soporte básico INFORMATION_SCHEMA, que incluye: MySQL, Postgres, Oráculo, IBM DB2y Microsoft SQL Server 7.0 (y superior).
He visto tantos que realmente no funcionan. cuando se crea una tabla temporal, debe eliminarse de la tempdb!
El único código que funciona es:
IF OBJECT_ID('tempdb..#tempdbname') IS NOT NULL --Remove dbo here
DROP TABLE #tempdbname -- Remoeve "tempdb.dbo"
O:
if exists (select * from sys.objects where name = 'Scores' and type = 'u')
drop table Scores
Espero que esto ayude:
begin try drop table #tempTable end try
begin catch end catch
Escribí un pequeño UDF que devuelve 1 si su argumento es el nombre de una tabla existente, 0 en caso contrario:
CREATE FUNCTION [dbo].[Table_exists]
(
@TableName VARCHAR(200)
)
RETURNS BIT
AS
BEGIN
If Exists(select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME = @TableName)
RETURN 1;
RETURN 0;
END
GO
Para eliminar la tabla User
si existe, llámalo así:
IF [dbo].[Table_exists]('User') = 1 Drop table [User]
Simple es eso:
IF OBJECT_ID(dbo.TableName, 'U') IS NOT NULL
DROP TABLE dbo.TableName
dónde dbo.TableName
es tu mesa deseada y 'U' es type
de tu table
.
DROP TABLE IF EXISTS dbo.Scores
O
IF OBJECT_ID('dbo.Scores', 'U') IS NOT NULL
DROP TABLE dbo.Scores;
U es tuyo table type
IF EXISTS (SELECT NAME FROM SYS.OBJECTS WHERE object_id = OBJECT_ID(N'Scores') AND TYPE in (N'U'))
DROP TABLE Scores
GO