CREATE TABLE [dbo].[ColumnName](
[Id] [int] NOT NULL,
[ColumnName] [varchar](50) NULL
) ON [PRIMARY]
GO
ALTER TRIGGER TABLECOLUMN_CHECK ON DATABASE
FOR CREATE_TABLE
AS
BEGIN
DECLARE @Text VARCHAR(MAX)
SELECT @Text = EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]',
'nvarchar(max)')
DECLARE @NewList VARCHAR(MAX)
SET @NewList = REPLACE(SUBSTRING(@Text, CHARINDEX('(', @Text, 0) + 1,
LEN(@Text)), ')', '') -- CHARINDEX('(',@Text,0)
DECLARE @RequireColumn INT
SELECT @RequireColumn = COUNT(1)
FROM dbo.ColumnName
IF ( @RequireColumn <> ( SELECT COUNT(1) FROM dbo.ColumnName
INNER JOIN
( SELECT SUBSTRING(REPLACE(REPLACE(REPLACE(LTRIM(RTRIM(Value)),
CHAR(9), ''),
CHAR(13), ''),
CHAR(10), ''), 0,
CHARINDEX(CHAR(32),
REPLACE(REPLACE(REPLACE(LTRIM(RTRIM(Value)),
CHAR(9), ''),
CHAR(13), ''),
CHAR(10), ''))) ColumnName
FROM dbo.Split(@NewList,',')
) AS ColumnList ON ColumnList.ColumnName = dbo.ColumnName.ColumnName
)
)
BEGIN
DECLARE @PrintMsg VARCHAR(MAX)
SELECT @PrintMsg = STUFF((SELECT ', ' + CAST(ColumnName AS VARCHAR(50)) [text()]
FROM dbo.ColumnName
WHERE ColumnName NOT IN
(
SELECT SUBSTRING(REPLACE(REPLACE(REPLACE(LTRIM(RTRIM(Value)),
CHAR(9), ''),
CHAR(13), ''),
CHAR(10), ''), 0,
CHARINDEX(CHAR(32),
REPLACE(REPLACE(REPLACE(LTRIM(RTRIM(Value)),
CHAR(9), ''),
CHAR(13), ''),
CHAR(10), '')))
FROM dbo.Split(@NewList,',')
) FOR XML PATH('') ,TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, ' ')
DECLARE @DisplayMsg VARCHAR(max)
SET @DisplayMsg = 'Sorry !! Table Not Created Because Required Column ( '+ @PrintMsg + ' ) Does Not Exits In This Table '
RAISERROR(@DisplayMsg,16,1)
ROLLBACK
END
END