2010-10-29 58 views
1

我有一個查詢來添加一列,如果它不存在。它第一次工作,但如果我再次運行它,它會失敗,說該列存在?!?如果列存在查詢問題 - 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 

而當我對INFORMATION_SCHEMA.COLUMNS運行查詢時,它不返回任何內容。

我也試過

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

版本,它具有相同的行爲(它工作一次,未能在第二輪)。

什麼時候sys表得到更新,什麼是傻瓜證明方式來測試列是否存在?

感謝, 山姆

+0

duplicate:http://stackoverflow.com/questions/133031/how-to-check-if-column-exists-in-sql-server-table – 2010-10-29 08:29:36

回答

0

我相信這是與使用上有問題,由於我們的扭曲數據庫設置。 information_schema查詢正在擊中master,而更新目標是另一個數據庫。 D'哦!