Thursday, September 25, 2014

Dynamic script for add columns

DECLARE @TableNameContainer TABLE
(
id INT IDENTITY(1,1)
,tableName VARCHAR(MAX)

)
DECLARE @RowCount INT, @index INT = 1;
INSERT INTO @TableNameContainer
SELECT name FROM sys.tables t2 WHERE
t2.name NOT IN ('Table1','Table2')-- list of table where you did not want to add
SELECT @RowCount = COUNT(*) FROM @TableNameContainer
WHILE (@index <= @RowCount)
BEGIN
DECLARE @tableName NVARCHAR(MAX) =(SELECT tableName FROM @TableNameContainer WHERE id= @index )
DECLARE @dynamicAlter NVARCHAR(MAX) =
'IF NOT EXISTS (SELECT * FROM   sys.columns  WHERE  object_id = OBJECT_ID(N''[dbo].['+@tableName+']'') AND name = ''CreatedBy'')
BEGIN ALTER TABLE ['+@tableName+'] ADD [CreatedBy] [int] NULL END

IF NOT EXISTS (SELECT * FROM   sys.columns  WHERE  object_id = OBJECT_ID(N''[dbo].['+@tableName+']'') AND name = ''CreatedDate'')
BEGIN ALTER TABLE ['+@tableName+'] ADD [CreatedDate] [datetime]  NULL  END

IF NOT EXISTS (SELECT * FROM   sys.columns  WHERE  object_id = OBJECT_ID(N''[dbo].['+@tableName+']'') AND name = ''ModifiedBy'')
BEGIN ALTER TABLE ['+@tableName+'] ADD [ModifiedBy] [int] NULL  END

IF NOT EXISTS (SELECT * FROM   sys.columns  WHERE  object_id = OBJECT_ID(N''[dbo].['+@tableName+']'') AND name = ''ModifiedBy'')
BEGIN ALTER TABLE ['+@tableName+'] ADD [ModifiedDate] [datetime] NULL  END

IF NOT EXISTS (SELECT * FROM   sys.columns  WHERE  object_id = OBJECT_ID(N''[dbo].['+@tableName+']'') AND name = ''IsDeleted'')
BEGIN ALTER TABLE ['+@tableName+'] ADD [IsDeleted] [bit] NULL  END

IF NOT EXISTS (SELECT * FROM   sys.columns  WHERE  object_id = OBJECT_ID(N''[dbo].['+@tableName+']'') AND name = ''DeletedBy'')
BEGIN ALTER TABLE ['+@tableName+'] ADD [DeletedBy] [int] NULL  END
     
IF NOT EXISTS (SELECT * FROM   sys.columns  WHERE  object_id = OBJECT_ID(N''[dbo].['+@tableName+']'') AND name = ''DeletedBy'')
BEGIN ALTER TABLE ['+@tableName+'] ADD [DeletedDate] [datetime] NULL  END    
'
EXECUTE sp_executesql @dynamicAlter
SET @index = @index + 1;
END-- OF WHILE

No comments: