我使用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' 附近语法不正确。 ...... 对于每个表格都是这样。
object_id(''?'')
即可解决问题。甚至更快的检查方法是if COLUMNPROPERTY(object_id(''?''), ''CreatedOn'', ''ColumnId'') is null
。 - Remus Rusanu