2

我想用这个查询在我的数据库中插入值:

INSERT INTO Users (pinConfirmed,Factor,DateUtc,LockoutEnabled,AccessCount,EmailConfirmed)
 values ('false', 'false','1/1/2018' ,'false','0','false')

但我收到此错误:无法将值 NULL 插入列 'Id'、表 'Users';列不允许空值。插入失败。

但是,数据库中已经有 Id 不为空的数据。我检查了这两个请求,但我的 ID 没有空值。

select * from Users where Id IS NULL;
select * from Users where Id = 'NULL';

我不明白问题出在哪里。请需要帮助。

4

3 回答 3

3

如果您进入表设计器,在 Id 列的属性中,您将看到 Identity Specification 属性设置如下:

在此处输入图像描述

将其展开并将(是身份)设置为是。这会将 Identity Increment 和 Identity Seed 的默认值设置为 1

在此处输入图像描述

现在保存表格,一切就绪。

于 2019-11-19T08:35:26.100 回答
2

根据您对上述问题的评论,该Id列定义为:

[Id] NVARCHAR (128) NOT NULL 

就是这样。没有默认值,没有身份/自动增量等。只是一个不能是的字符值NULL。但是当您执行插入时,您不提供值:

INSERT INTO Users (pinConfirmed,Factor,DateUtc,LockoutEnabled,AccessCount,EmailConfirmed)
values ('false', 'false','1/1/2018' ,'false','0','false')

这就是你得到错误的原因。 表示需要NOT NULL一个值。你不提供一个。

你有几个选择:

  • 为该列提供一个值,当您INSERT
  • 使列生成自己的值(这将取决于您的 RDBMS,例如,在 SQL Server 中,您会将列设为 anIDENTITY或在 MySQL 中设为 an AUTOINCREMENT,尽管这两者都是针对整数列,而您的是字符数据,因此您还需要更改数据类型)
  • Allow NULL,这当然只能工作一次,因为这是一个主键列并且值必须是唯一的。
于 2018-12-06T17:45:09.233 回答
0

ID 是 PRIMARY key ,它是行的唯一标识符。它不能为空。这就是你有错误的原因。

于 2018-12-06T17:41:20.243 回答