Sql server 可为NULL的列上的NULL默认约束
我继承了一个自SQLServer6.5以来一直存在的数据库。它现在位于SQL Server 2014兼容模式下的SQL Server 2014机箱上。作为我对数据库的初步分析的一部分,我发现了几个具有默认约束值为NULL的可空列的表。示例表脚本如下所示:Sql server 可为NULL的列上的NULL默认约束,sql-server,default-constraint,Sql Server,Default Constraint,我继承了一个自SQLServer6.5以来一直存在的数据库。它现在位于SQL Server 2014兼容模式下的SQL Server 2014机箱上。作为我对数据库的初步分析的一部分,我发现了几个具有默认约束值为NULL的可空列的表。示例表脚本如下所示: CREATE TABLE [dbo].[tester]( [tester_id int identity(1,1) not null primary key clustered, [profile_type_key] [int] NOT NUL
CREATE TABLE [dbo].[tester](
[tester_id int identity(1,1) not null primary key clustered,
[profile_type_key] [int] NOT NULL,
[reel_key] [int] NULL,
[product_key] [int] NULL,
[cd_percent_cov] [decimal](15, 4) NULL constraint DF_cd_percent_cov default (NULL),
[md_percent_cov] [decimal](15, 4) NULL constraint DF_md_percent_cov default (NULL))
SQL显然允许这样做,但我很难理解为什么会存在这些默认值。任何人都可以分享这种列定义的可能理由吗
谢谢 不需要这样做,但是显式添加它可以帮助向以后继承此代码的人(即您)表示,如果没有提供值,他们明确表示将存在空值。同样,这可能只是他们创建此脚本时使用的一个标准(可能出于上述原因)。没有必要这样做,但显式添加它有助于向以后继承此代码的人(即您)表示,如果没有提供值,他们明确表示将有空值。同样,这可能只是他们创建此脚本时使用的一个标准(可能出于上述原因)。如您所述,默认(NULL)约束将确定用户定义的值,因此在您的情况下,字段[cd_%cov]和[md_%cov]的默认值为NULL 所以,一旦将约束修复为默认值(NULL),就不能提供任何数据 否则错误将如下所示 Msg 515,16级,状态2,第11行 无法将该值的零值插入无法插入的值,无法将该值的零值插入到列“概要”型“类型”型“关键”型“波形”型“文件”型“文件”型“类型”型“文件”型“文件”型“文件”型“类型”型“类型”型“类型”型“关键”,表“临时”表“temdb.dbo.dbo..\\\埃埃埃埃埃埃格格格\uuuuuuuuuUUUUUUUU\\\\\\\uuuuuuuuuuuuuuuuuuuuuuuuuuu\\\\\\\\\\\ uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu0000000 4F49';列不允许空值。插入失败。
语句已终止。如您所述,默认(NULL)约束将确定用户定义的值,因此在您的情况下,字段[cd_百分比\u cov]和[md_百分比\u cov]的默认值为NULL 所以,一旦将约束修复为默认值(NULL),就不能提供任何数据 否则错误将如下所示 Msg 515,16级,状态2,第11行 无法将该值的零值插入无法插入的值,无法将该值的零值插入到列“概要”型“类型”型“关键”型“波形”型“文件”型“文件”型“类型”型“文件”型“文件”型“文件”型“类型”型“类型”型“类型”型“关键”,表“临时”表“temdb.dbo.dbo..\\\埃埃埃埃埃埃格格格\uuuuuuuuuUUUUUUUU\\\\\\\uuuuuuuuuuuuuuuuuuuuuuuuuuu\\\\\\\\\\\ uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu0000000 4F49';列不允许空值。插入失败。 声明已终止