2010-10-29 5 views
1

J'ai une requête pour ajouter une colonne si elle n'existe pas. Cela fonctionne la première fois, mais si je le lance à nouveau, il échoue, en disant que la colonne existe?!?Si une colonne existe problème de requête - SQL Server

IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TABLE_NAME' AND COLUMN_NAME = 'COLUMN_NAME') 
BEGIN 
    ALTER TABLE TABLE_NAME ADD COLUMN nchar(3) NULL; 
END 

Et lorsque je lance la requête contre INFORMATION_SCHEMA.COLUMNS, il ne renvoie rien.

J'ai aussi essayé le

IF NOT EXISTS (SELECT * FROM SYS.COLUMNS WHERE NAME = N'COLUMN_NAME' AND OBJECT_ID = OBJECT_ID(N'TABLE_NAME')) 

version, qui présente le même comportement (cela fonctionne une fois, et échoue sur la deuxième manche).

À quel moment les tables sys sont-elles mises à jour, et quel est le moyen infaillible de tester si une colonne existe?

Merci, Sam

+0

dupliquer: http://stackoverflow.com/questions/133031/how-to-check-if-column-exists-in-sql-server-table –

Répondre

0

Je crois qu'il était un problème avec l'utilisation en raison de notre configuration de base de données çela. La requête information_schema atteignait le maître alors que la mise à jour ciblait une autre base de données. D'oh!