在SQL Server Management Studio中创建新表或通过表设计器向现有表添加列时,会显示3列:
允许Null始终默认为True
(勾选),但是,我想知道是否可以将SSMS配置为始终将其默认为False
(未选中)?
在较小程度上,我也有兴趣知道是否可以在下方窗格的“列属性”选项卡中配置可编辑的默认选项。
答案 0 :(得分:3)
老实说,我不确定 Allow Nulls 的默认值是否可配置。我希望不是。事实上,我希望它不可配置,因为它可能在某些时候令人困惑。这是我的推理。
默认允许Nulls 到True
似乎与我在{NULL
/ NOT NULL
的DDL语句的列声明中缺少NULL
/ CREATE TABLE
一致NULL
1}}。也就是说,在使用NOT NULL
语句时我是否省略了该列的定义,或者在使用某些工具(如SSMS)的对话模式时我没有注意它,我希望结果是相同的。
由于NULL
或{{1}}的缺席已经被很多人解释为{{1}}已经有一段时间了,我认为改变这个含义并不是很有意义现在。因此,新表格对话框中允许空值选项的默认值也不应更改。
可能有意义的是,默认新列Deny Null 开关(当然最初关闭),在对话框中更改默认行为在这个特定的表编辑会话中。
答案 1 :(得分:3)
我认为它不可配置,只是因为当您尝试在编辑表模式下关闭它时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。
答案 2 :(得分:3)
如果您可以操作注册表项,则可以选择强制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指出了这一步。
希望有所帮助。