我正在使用SQL Server 2005/2008。如果它還不存在,我需要向表中添加一列。這將適用於給定數據庫中的所有表。我希望我很接近,但是我遇到了這個解決方案的問題。添加一列,如果它不存在所有表?
這怎麼辦?
這是我有:
EXEC sp_MSforeachtable '
declare @tblname varchar(255);
SET @tblname = PARSENAME("?",1);
if not exists (select column_name from INFORMATION_SCHEMA.columns
where table_name = @tblname and column_name = ''CreatedOn'')
begin
ALTER TABLE @tblname ADD CreatedOn datetime NOT NULL DEFAULT getdate();
end
'
但我得到的錯誤:
錯誤102:附近有語法錯誤@tblname「。 「CreatedOn」附近語法不正確。 「@tblname」附近的語法不正確。 「CreatedOn」附近語法不正確。 ...等,每個表。
可能重複http://stackoverflow.com/questions/1779743/adding-a-column- to-all-user-tables-in-t-sql – JAiro 2011-02-28 18:38:04
@JAiro:這絕對是一個相關的鏈接,但「如果不存在」規則很重要,並且使它更復雜一些。 – 2011-02-28 18:41:00
好,所以你可以用這個完成信息:http://stackoverflow.com/questions/133031/how-to-check-if-column-exists-in-sql-server-table – JAiro 2011-02-28 18:44:40