0

I need to set my column consent in the same file that I am creating it in. The problem is that I get an error saying that consent is an invalid column name meaning it isn't going to run unless the altered statement has run and added the column to the table first. Is there anything I could do to get my altered statement to run first adding the consent column to the table than running my updated statement? Again I need to run this in the same file together.

  USE [Elearn2]
GO

IF NOT EXISTS(SELECT *FROM  INFORMATION_SCHEMA.COLUMNS WHERE  TABLE_NAME = 'UserMetaData' AND COLUMN_NAME = 'Consent')
BEGIN
    ALTER TABLE UserMetaData 
            ADD Consent BIT NULL DEFAULT 0,
            [CreatedAt] [datetime2]  NULL,
        [CreatedBy] [uniqueidentifier] NULL,
        [UpdatedAt] [datetime2] NULL,
        [UpdatedBy] [uniqueidentifier] NULL;
        END  
        
        UPDATE UserMetaData 
SET Consent = 0
WHERE Consent IS NULL;
ALTER TABLE UserMetaData
ALTER COLUMN Consent BIT NOT NULL;

UPDATE UserMetaData 
SET [CreatedBy] = ('00000000-0000-0000-0000-000000000000')
WHERE [CreatedBy] IS NULL;
ALTER TABLE UserMetaData
ALTER COLUMN [CreatedBy] [uniqueidentifier] NOT NULL;
UPDATE UserMetaData 
SET [UpdatedBy] = ('00000000-0000-0000-0000-000000000000')
WHERE [UpdatedBy] IS NULL;
ALTER TABLE UserMetaData
ALTER COLUMN [UpdatedBy] [uniqueidentifier] NOT NULL;

UPDATE UserMetaData 
SET [CreatedAt] = '1900-01-01 00:00:00.0000000'
WHERE [CreatedAt] IS NULL;
ALTER TABLE UserMetaData
ALTER COLUMN [CreatedAt] [datetime2] NOT NULL;

UPDATE UserMetaData 
SET [UpdatedAt] = '1900-01-01 00:00:00.0000000'
WHERE [UpdatedAt] IS NULL;
ALTER TABLE UserMetaData
ALTER COLUMN [UpdatedAt] [datetime2] NOT NULL;

        DECLARE @ModDate NVARCHAR(max)
    
        SET @ModDate = '
    
        CREATE TRIGGER ModDate 
        ON UserMetaData
        AFTER INSERT, UPDATE
    AS
    BEGIN
        UPDATE X 
        SET [UpdatedAt] = GETDATE()
        FROM UserMetaData X
        JOIN inserted i ON X.[UserId] = i.[UserId] 
    END'
    EXECUTE (@ModDate)
    

0 Answers0