表创建时IDENTITY NOT NULL

Mig*_*uel 14 sql null identity

任何人都可以告诉我IDENTITY NOT NULL创建表的指令是否多余?我的意思是,从消息来判断

DEFAULT或NULL不允许作为显式标识值.

我会说声明的任何列IDENTITY都是隐式声明的NOT NULL,但我想确定.有人可以确认吗?

非常感谢你.

Pra*_*ana 10

SQL Server会自动为标识列添加NOT NULL约束,尽管在创建表时它没有对其进行说明

请考虑以下表脚本

create table test(id int identity(1,1), name varchar(1000))
Run Code Online (Sandbox Code Playgroud)

现在从Management Studio生成表的脚本.它生成脚本为

CREATE TABLE [dbo].[test](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [name] [varchar](1000) NULL
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

尽管在表脚本中未指定NOT NULL约束,但默认情况下会添加它.标识列永远不会为NULL.因此默认添加NOT NULL约束

  • 如果不指定 NULL 或 NOT NULL,SQL 会将标识列设置为 NOT NULL。我总是会指定它,以避免因“SET ANSI_NULL_DFLT_OFF”和“SET ANSI_NULL_DFLT_ON”命令的存在而造成的混乱。 (2认同)