Dans un package SSIS au travail, il y a des tâches SQL qui créent des tables de mise en scène pour stocker les données d'importation. Toutes les instructions prennent cette forme :
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
Dans le livre d'Itzik Ben-Gan Principes de base de T-SQL je vois une forme différente d'instruction pour créer une table :
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
Chacun de ces codes semble faire la même chose. Après l'exécution, il y aura une table vide appelée tbNewTable dans le schéma dbo.
Y a-t-il des différences pratiques ou théoriques entre les deux ? Quelles implications pourraient-elles avoir ?