1
为什么在列上运行ALTER TABLE会使它从NOT NULL变为NULL?
我正在大规模更新SQL Server数据库。我将所有numeric(38,0)列更改为int (是的,SQL Server脚本是从Oracle脚本创建的)。使用SMO和C#(我是一名软件工程师),我设法生成了非常不错的脚本,如SQL Server Management Studio。除了一个特定的问题,所有这些工作都非常好: 对于少数几个表,当我调用ALTER TABLE [myTable] ALTER COLUMN [columnA] INT它时,它决定还更改的列NOT NULL to NULL。这当然是一个巨大的问题,因为我需要为那些特定列上的大多数表重新生成主键。 显然,我在使用SMO时有很多选择,可以找出哪些列是主键,并在更新数据类型后或更新时将它们强制为NOT NULL,但我真的很好奇这可能是什么原因。