Sql server 知道为什么运行altercolumn会导致column从“;不为空”;至“;空”;?
我正在批量更新SQL Server数据库。我正在将所有的Sql server 知道为什么运行altercolumn会导致column从“;不为空”;至“;空”;?,sql-server,sql-server-2005,tsql,sql-server-2008,Sql Server,Sql Server 2005,Tsql,Sql Server 2008,我正在批量更新SQL Server数据库。我正在将所有的numeric(38,0)列更改为int(是的,SQL Server脚本是从Oracle脚本创建的) 使用SMO和C#(我是一名软件工程师),我成功地生成了非常好的脚本,就像SQLServerManagementStudio一样 除了一个特殊问题外,所有这些都非常有效: 当我打电话给你的时候 ALTER TABLE [myTable] ALTER COLUMN [columnA] INT 它还决定将列从notnull更改为NULL。这当然
numeric(38,0)
列更改为int
(是的,SQL Server脚本是从Oracle脚本创建的)
使用SMO和C#(我是一名软件工程师),我成功地生成了非常好的脚本,就像SQLServerManagementStudio一样
除了一个特殊问题外,所有这些都非常有效:
当我打电话给你的时候
ALTER TABLE [myTable] ALTER COLUMN [columnA] INT
它还决定将列从notnull更改为NULL。这当然是一个很大的问题,因为我需要为这些特定列上的大多数表重新生成主键
显然,我有很多选择使用SMO来找出哪些列是主键,并在更新数据类型之后或更新数据类型时强制它们不为NULL,但我真的很好奇是什么导致了这一点
问候,
Eric.因为在缺少
NOT NULL
的情况下,默认值为NULL
ALTER TABLE [myTable]
ALTER COLUMN [columnA] INT NOT NULL
因为在缺少
NOT NULL
的情况下,默认值为NULL
ALTER TABLE [myTable]
ALTER COLUMN [columnA] INT NOT NULL
从
使用创建或更改表时
创建表或更改表
语句、数据库和会话
设置影响并可能
重写数据的可空性
在列中使用的类型
定义。我们建议您
始终将列显式定义为
对于未计算的,为NULL或不为NULL
列
从
使用创建或更改表时
创建表或更改表
语句、数据库和会话
设置影响并可能
重写数据的可空性
在列中使用的类型
定义。我们建议您
始终将列显式定义为
对于未计算的,为NULL或不为NULL
列
另外,在ALTERCOLUMN部分,ALTERCOLUMN的ANSI null默认值始终处于启用状态;如果未指定,则该列可为空。您是正确的。仔细检查后,我所有修改过的列都被重置为可空。结果证明这是一个很容易解决的问题。感谢您的帮助。另外,在ALTERCOLUMN部分-对于ALTERCOLUMN,ANSI null默认值始终处于启用状态;如果未指定,则该列可为空。您是正确的。仔细检查后,我所有修改过的列都被重置为可空。结果证明这是一个很容易解决的问题。谢谢你的帮助。