小编Eri*_*ndi的帖子

为什么在列上运行 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,但我真的很好奇是什么导致了这种情况。

sql-server-2005 sql-server-2008 sql-server

8
推荐指数
1
解决办法
460
查看次数