drop - ¿Cómo soltar una tabla si existe en SQL Server?
verificar si existe tabla temporal sql server (12)
¿Es correcto hacer lo siguiente?
IF EXISTS(SELECT * FROM dbo.Scores) DROP TABLE dbo.Scores
No. Eso eliminará la tabla solo si contiene filas (y generará un error si la tabla no existe).
En cambio, para una mesa permanente puedes usar
IF OBJECT_ID(''dbo.Scores'', ''U'') IS NOT NULL
DROP TABLE dbo.Scores;
O bien, para una tabla temporal puede utilizar
IF OBJECT_ID(''tempdb.dbo.#T'', ''U'') IS NOT NULL
DROP TABLE #T;
SQL Server 2016+ tiene una mejor manera, usando DROP TABLE IF EXISTS …
Vea la respuesta por @Jovan .
El nombre de la tabla es Scores
.
¿Es correcto hacer lo siguiente?
IF EXISTS(SELECT *
FROM dbo.Scores)
DROP TABLE dbo.Scores
Desde SQL Server 2016 puedes usar
DROP TABLE IF EXISTS dbo.Scores
Referencia: DROP IF EXISTS - algo nuevo en SQL Server 2016
Estará en la base de datos SQL Azure pronto.
En SQL Server 2016 (13.x) y superior
DROP TABLE IF EXISTS dbo.Scores
En versiones anteriores
IF OBJECT_ID(''dbo.Scores'', ''U'') IS NOT NULL
DROP TABLE dbo.Scores;
U es tu table type
Escribí un pequeño UDF que devuelve 1 si su argumento es el nombre de una tabla existente, 0 de lo 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 el User
tabla, si existe, llámelo así:
IF [dbo].[Table_exists](''User'') = 1 Drop table [User]
Espero que esto ayude:
begin try drop table #tempTable end try
begin catch end catch
Haz esto, es la forma más fácil.
qry
será su propia consulta, lo que desee en la lista de selección.
set @qry = '' select * into TempData from ('' + @qry + '')Tmp ''
exec (@qry)
select * from TempData
drop table TempData
He visto tantos que realmente no funcionan. cuando se crea una tabla temporal, se debe eliminar del 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"
La forma ANSI SQL / multiplataforma es usar 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 ofrecen, al menos, soporte básico de INFORMATION_SCHEMA, que incluye: MySQL , Postgres , Oracle , IBM DB2 y Microsoft SQL Server 7.0 (y más) .
O:
if exists (select * from sys.objects where name = ''Scores'' and type = ''u'')
drop table Scores
Simple es que:
IF OBJECT_ID(dbo.TableName, ''U'') IS NOT NULL
DROP TABLE dbo.TableName
donde dbo.TableName
es su tabla deseada y ''U'' es el type
de su table
.
Yo suelo:
if exists (select *
from sys.tables
where name = ''tableName''
and schema_id = schema_id(''dbo''))
begin
drop table dbo.tableName
end
IF EXISTS (SELECT NAME FROM SYS.OBJECTS WHERE object_id = OBJECT_ID(N''Scores'') AND TYPE in (N''U''))
DROP TABLE Scores
GO