加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL Server,无法在主键字段中插入null?

发布时间:2020-12-12 16:11:20 所属栏目:MsSql教程 来源:网络整理
导读:我准备好把这个头发撕开了.我对MS SQL很新,并且在任何地方都没有看到类似的帖子. 当我尝试这样做的声明: INSERT INTO qcRawMatTestCharacteristic VALUES(NULL,1,'',GETDATE(),1) 我得到以下内容: Cannot insert the value NULL into column ‘iRawMatTestC
我准备好把这个头发撕开了.我对MS SQL很新,并且在任何地方都没有看到类似的帖子.

当我尝试这样做的声明:

INSERT INTO qcRawMatTestCharacteristic 
VALUES(NULL,1,'',GETDATE(),1)

我得到以下内容:

Cannot insert the value NULL into
column ‘iRawMatTestCharacteristicId’,
table
‘Intranet.dbo.qcRawMatTestCharacteristic’;
column does not allow nulls. INSERT
fails.

我明白错误,但是null值是针对我的主字段和int数据类型的.

有任何想法吗!?

解决方法

任何关系数据库中的主键都不允许为空 – 它是主键的主要基本特征之一.

见:SQL by Design: how to Choose the primary key

Never Null
No primary key value can be null,nor can you do anything to
render the primary key null. This is
an inviolate rule of the relational
model as supported by ANSI
,of
relational database management system
(RDBMS) design,and of SQL Server.

更新:好的,所以你想要一个“自动递增”主键在SQL Server中.

您需要在CREATE TABLE语句中将其定义为INT IDENTITY:

CREATE TABLE dbo.YourTable(ID INT IDENTITY,col1 INT,...,colN INT)

然后当您执行INSERT时,您需要显式指定要插入的列,但是不要在该列表中指定“ID”列,则SQL Server将自动处理查找适当值:

INSERT INTO dbo.YourTable(col1,col2,colN) -- anything **except** `ID`      
 VALUES(va1l,val2,valN)

如果要在创建表之后执行此操作,可以在SQL Server Management Studio的表设计器中执行此操作:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读