我正在大量更新Server数据库。我将我们所有的numeric(38,0)列更改为int (是的,Server脚本是从int脚本创建的)。
使用SMO和C# (我是一个sw工程师),我成功地生成了非常好的脚本,就像那样。
除了一个特定的问题外,所有这些都很好地工作:
当我打电话给你的时候
ALTER TABLE [myTable] ALTER COLUMN [columnA] INT它还决定将列从 NULL更改为NULL。当然,这是一个很大的问题,因为我需要为这些特定列上的大多数表重新生成主键。
显然,我有很多选项使用SMO找出哪些列是主键,并在更新数据类型后或更新数据类型时强迫它们不为NULL,但我真的很好奇是什么导致了这一点。
致以敬意,
埃里克。
发布于 2011-02-08 04:38:30
因为在NOT NULL的缩写中,缺省值为NULL。
ALTER TABLE [myTable]
ALTER COLUMN [columnA] INT NOT NULL发布于 2011-02-08 04:40:29
来自ALTER (Transact-SQL)
使用create或alter语句创建或更改表时,数据库和会话设置会影响并可能重写列定义中使用的数据类型的空值。我们建议对于非计算列,始终显式地将列定义为NULL或NULL。
https://stackoverflow.com/questions/4929575
复制相似问题