在 SQL Server Management Studio 中,当通过表设计器创建新表或向现有表添加列时,会显示 3 列:
- 列名
- 数据类型
- 允许空值
允许 Nulls 始终默认为True
(勾选),但是,我想知道是否可以将 SSMS 配置为始终默认为False
(未勾选)?
在较小程度上,我还想知道是否可以在下部窗格的“列属性”选项卡中配置可编辑的默认选项。
在 SQL Server Management Studio 中,当通过表设计器创建新表或向现有表添加列时,会显示 3 列:
允许 Nulls 始终默认为True
(勾选),但是,我想知道是否可以将 SSMS 配置为始终默认为False
(未勾选)?
在较小程度上,我还想知道是否可以在下部窗格的“列属性”选项卡中配置可编辑的默认选项。
我想它是不可配置的,只是因为当您尝试在编辑表模式下将其关闭时 SSMS 会引发拟合(假设它们使用相同的底层代码库)。
但是,您可以使用SET ANSI_NULL_DFLT_ON来实现您想要的。这将覆盖新列的默认可空性(对于会话)。
请注意 sp_help 中“Nullable”列与以下查询的区别。
set ANSI_NULL_DFLT_ON ON
create table test (id int)
go
sp_help test
go
set ANSI_NULL_DFLT_ON OFF
drop table test
create table test (id int)
go
sp_help test
我假设您希望这样做是为了强制您自己或与您一起工作的人将他们的列默认为 NOT NULL 而不是 NULL。
老实说,我不确定Allow Nulls的默认值是否可配置。我希望不是。事实上,我希望它不会是可配置的,因为它有时可能会令人困惑。这是我的推理。
在我看来,默认允许 Nulls与将DDL 语句的列声明中不存在/的情况默认为 . 也就是说,无论是我在使用语句时省略了那一点列定义,还是在使用像 SSMS 这样的工具的对话模式时不注意它,我都希望结果是一样的。True
NULL
NOT NULL
NULL
CREATE TABLE
由于没有NULL
或NOT NULL
已经被NULL
许多人解释为已经有一段时间了,我认为现在改变这个含义没有多大意义。因此,新表对话框中允许 Nulls选项的默认值也不应更改。
但是,可能有意义的是,对话框中的Default new columns to Deny Null开关(当然最初是关闭的)以更改此特定表编辑会话中的默认行为。
如果您可以操作注册表项,这里有一个选项可以强制 SSMS 始终将值false分配给Allow Null属性。
NOTE: Please be careful while altering registry keys.
在Windows 开始-->运行命令中键入regedit以打开注册表编辑器。
导航到HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\100\Tools\Shell\DataProject
您可能需要相应地更改 SQL Server 版本。我正在使用SQL Server 2008 R2 Express和因此版本100。
在上述注册表路径下,查找键名SSVDefaultAllowNull
。
右键单击该键并选择修改选项。将值从1更改为0
。默认值为1,表示True。
如果您已经在运行SQL Server Management Studio,请重新启动它。感谢@Andriy M指出这一步。
希望有帮助。