Dans SQL Server 2008, je souhaite ajouter une colonne à une table et la mettre à jour juste après, mais uniquement si la colonne n'a pas été créée auparavant. Je ne veux pas exécuter la mise à jour si la colonne a été créée auparavant.Comment puis-je mettre à jour une colonne nouvellement ajoutée dans la même instruction de traitement?
IF NOT EXISTS (SELECT *
FROM [INFORMATION_SCHEMA].[COLUMNS]
WHERE [TABLE_NAME] = 'SETTINGS' AND [COLUMN_NAME] = 'COLOR_SCHEME')
BEGIN
ALTER TABLE [SETTINGS]
ADD [COLOR_SCHEME] int NULL
UPDATE [SETTINGS]
SET [COLOR_SCHEME] = 1
END
Mettre un « GO » après l'ajout de la colonne ne fonctionne pas parce que ce ne serait pas une déclaration de lot complet, mais si je tente de courir comme ça, je reçois l'erreur « , nom de colonne non valide 'SCHÉMA DE COULEUR'."
Des idées sur comment faire pour que la colonne existe lors de l'exécution de la mise à jour?
Ooo, un nouveau concept pour moi, je vais essayer ça! –
Cela a fonctionné, mais j'ai dû faire la partie mise à jour le SQL dynamique, sinon il se plaindrait encore d'une colonne qui n'existait pas: DECLARE @SQL NVARCHAR (4000) SET @SQL = 'UPDATE [SETTINGS] SET [COLOR_SCHEME] = 1 ' EXEC (@SQL) Merci beaucoup! –
Magie noire pure; Merci. –