Drop Taber如果不在Azure SQL数据仓库上不起作用



我使用SQL Server Management Studio来针对Azure Data Warehouse生成脚本。我选择了Azure Data Warehouse,它在脚本下方生成以下如果存在并创建表。但是,脚本无法通过验证。请参阅下面的错误消息。

DROP TABLE IF EXISTS Table1
GO

错误消息:

在行中解析错误:2,列:12:近附近的语法。

如文档中所示,DROP TABLE IF EXISTS目前在Azure SQL数据仓库中不支持:

-- Syntax for SQL Server and Azure SQL Database  
DROP TABLE [ IF EXISTS ] [ database_name . [ schema_name ] . | schema_name . ]  
table_name [ ,...n ]  
[ ; ]
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse    
DROP TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name   
[;] 

鲍勃的答案是正确的。我试图将以下评论添加为评论,但看起来很糟糕而不格式化。

您可以将以下语法用作替代方案:

if object_id ('dw.dim_location','U') is not null drop table dw.dim_location;

Microsoft文档中的示例:

IF OBJECT_ID('tempdb..#stats_ddl') IS NOT NULL
BEGIN
    DROP TABLE #stats_ddl
END

用任何命名临时表替换stats_ddl

将其变成像Ron的示例这样的单线也有效:

IF OBJECT_ID('tempdb..#stats_ddl') IS NOT NULL DROP TABLE #stats_ddl;

只是为了添加另一个选项,以下代码也应适用于SQL Server的场所和Azure SQL DB,这是您选择"脚本为drop"的选项。来自Azure Data Studio:

--
--
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[your_table]') AND type in (N'U'))
DROP TABLE [dbo].[your_table]
--
;

最新更新