在工作中的 SSIS 包中,有一些 SQL 任务用于创建暂存表以保存导入数据。所有语句都采用以下形式:
在Itzik Ben-Gan的T-SQL基础中,我看到了一种不同的创建表语句形式:
每个都似乎做同样的事情。执行后,将在dbo模式中创建一个名为tbNewTable的空表。
这两者之间有实际或理论上的区别吗?它们可能会产生什么影响?
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'dbo.tbNewTable') AND type in (N'U'))
BEGIN
TRUNCATE TABLE dbo.tbNewTable
END
ELSE
BEGIN
CREATE TABLE dbo.tbNewTable (
ColumnA VARCHAR(10) NULL,
ColumnB VARCHAR(10) NULL,
ColumnC INT NULL
) ON PRIMARY
END
在Itzik Ben-Gan的T-SQL基础中,我看到了一种不同的创建表语句形式:
IF OBJECT_ID('dbo.tbNewTable', 'U') IS NOT NULL
BEGIN
DROP TABLE dbo.tbNewTable
END
CREATE TABLE dbo.tbNewTable (
ColumnA VARCHAR(10) NULL,
ColumnB VARCHAR(10) NULL,
ColumnC INT NULL
) ON PRIMARY
每个都似乎做同样的事情。执行后,将在dbo模式中创建一个名为tbNewTable的空表。
这两者之间有实际或理论上的区别吗?它们可能会产生什么影响?