将列添加到表时强制使用默认值-SQL Server
时间:2020-03-06 14:25:08 来源:igfitidea点击:
在SQL Server 2000/2005中,
在将新列添加到表时,如果不对新列使用NOT NULL,是否可以强制将默认值写入到现有行?
解决方案
我对此表示怀疑。
http://msdn.microsoft.com/zh-CN/library/ms190273(SQL.90).aspx
微软推荐的方法如下(取自上面的URL)
UPDATE MyTable SET NullCol = N'some_value' WHERE NullCol IS NULL ALTER TABLE MyTable ALTER COLUMN NullCOl NVARCHAR(20) NOT NULL
我们需要两个语句。首先创建不为null的列。然后将not null约束更改为nullable
alter table mytable add mycolumn varchar(10) not null default ('a value') alter table mytable alter column mycolumn varchar(10) null
我理解问题,但我们是说对于将来的记录,可以接受NULL(未知,不确定或者任何语义)(但如果将其保留在插入内容中,则将使用默认值),但是对于所有现有数据,我们将继续进行操作并为其分配默认值。
我将不得不认真考虑这种情况,并问为什么在没有历史记录的情况下,甚至在所有将来的记录中都不允许使用NULL,并且将来的记录有默认值。